--- old/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp 2015-03-18 09:47:43.715051545 +0100 +++ new/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp 2015-03-18 09:47:43.571045658 +0100 @@ -3093,10 +3093,10 @@ G1VerifyCodeRootBlobClosure blobsCl(&codeRootsCl); { - G1RootProcessor root_processor(this, false /* trace_metadata */); + G1RootProcessor root_processor(this); root_processor.process_all_roots(&rootsCl, &cldCl, - &blobsCl); + &blobsCl); } bool failures = rootsCl.failures() || codeRootsCl.failures(); @@ -4450,6 +4450,8 @@ CLDClosure* strong_cld_cl; CLDClosure* weak_cld_cl; + bool trace_metadata = false; + if (_g1h->g1_policy()->during_initial_mark_pause()) { // We also need to mark copied objects. strong_root_cl = &scan_mark_root_cl; @@ -4457,6 +4459,7 @@ if (ClassUnloadingWithConcurrentMark) { weak_root_cl = &scan_mark_weak_root_cl; weak_cld_cl = &scan_mark_weak_cld_cl; + trace_metadata = true; } else { weak_root_cl = &scan_mark_root_cl; weak_cld_cl = &scan_mark_cld_cl; @@ -4474,6 +4477,7 @@ weak_root_cl, strong_cld_cl, weak_cld_cl, + trace_metadata, worker_id); G1ParPushHeapRSClosure push_heap_rs_cl(_g1h, &pss); @@ -5464,13 +5468,10 @@ double end_par_time_sec; { - const bool during_im = g1_policy()->during_initial_mark_pause(); - const bool trace_metadata = during_im && ClassUnloadingWithConcurrentMark; - - G1RootProcessor root_processor(this, trace_metadata); + G1RootProcessor root_processor(this); G1ParTask g1_par_task(this, _task_queues, &root_processor); // InitialMark needs claim bits to keep track of the marked-through CLDs. - if (during_im) { + if (g1_policy()->during_initial_mark_pause()) { ClassLoaderDataGraph::clear_claimed_marks(); }