If we run the remarking phase in the VM thread we'll crash if the reference processor is setup to use multi-threaded discovery.
We crash because as_Worker_thread() returns NULL in get_discovered_list():
if (_discovery_is_mt) {
// During a multi-threaded discovery phase,
// each thread saves to its "own" list.
Thread* thr = Thread::current();
id = thr->as_Worker_thread()->id();
} else {
// single-threaded discovery, we save in round-robin
// fashion to each of the lists.
if (_processing_is_mt) {
id = next_id();
}
}