1.1 --- a/src/share/vm/gc_implementation/parallelScavenge/pcTasks.cpp Mon Nov 26 12:31:03 2012 -0500 1.2 +++ b/src/share/vm/gc_implementation/parallelScavenge/pcTasks.cpp Tue Nov 27 10:13:20 2012 +0100 1.3 @@ -52,14 +52,22 @@ 1.4 PrintGCDetails && TraceParallelOldGCTasks, true, gclog_or_tty)); 1.5 ParCompactionManager* cm = 1.6 ParCompactionManager::gc_thread_compaction_manager(which); 1.7 + 1.8 PSParallelCompact::MarkAndPushClosure mark_and_push_closure(cm); 1.9 + CLDToOopClosure mark_and_push_from_clds(&mark_and_push_closure, true); 1.10 CodeBlobToOopClosure mark_and_push_in_blobs(&mark_and_push_closure, /*do_marking=*/ true); 1.11 1.12 if (_java_thread != NULL) 1.13 - _java_thread->oops_do(&mark_and_push_closure, &mark_and_push_in_blobs); 1.14 + _java_thread->oops_do( 1.15 + &mark_and_push_closure, 1.16 + &mark_and_push_from_clds, 1.17 + &mark_and_push_in_blobs); 1.18 1.19 if (_vm_thread != NULL) 1.20 - _vm_thread->oops_do(&mark_and_push_closure, &mark_and_push_in_blobs); 1.21 + _vm_thread->oops_do( 1.22 + &mark_and_push_closure, 1.23 + &mark_and_push_from_clds, 1.24 + &mark_and_push_in_blobs); 1.25 1.26 // Do the real work 1.27 cm->follow_marking_stacks(); 1.28 @@ -89,7 +97,8 @@ 1.29 { 1.30 ResourceMark rm; 1.31 CodeBlobToOopClosure each_active_code_blob(&mark_and_push_closure, /*do_marking=*/ true); 1.32 - Threads::oops_do(&mark_and_push_closure, &each_active_code_blob); 1.33 + CLDToOopClosure mark_and_push_from_cld(&mark_and_push_closure); 1.34 + Threads::oops_do(&mark_and_push_closure, &mark_and_push_from_cld, &each_active_code_blob); 1.35 } 1.36 break; 1.37