src/share/vm/gc_implementation/parallelScavenge/pcTasks.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File hsx-gc Cdiff src/share/vm/gc_implementation/parallelScavenge/pcTasks.cpp

src/share/vm/gc_implementation/parallelScavenge/pcTasks.cpp

Print this page

        

*** 50,67 **** NOT_PRODUCT(TraceTime tm("ThreadRootsMarkingTask", PrintGCDetails && TraceParallelOldGCTasks, true, gclog_or_tty)); ParCompactionManager* cm = ParCompactionManager::gc_thread_compaction_manager(which); PSParallelCompact::MarkAndPushClosure mark_and_push_closure(cm); CodeBlobToOopClosure mark_and_push_in_blobs(&mark_and_push_closure, /*do_marking=*/ true); if (_java_thread != NULL) ! _java_thread->oops_do(&mark_and_push_closure, &mark_and_push_in_blobs); if (_vm_thread != NULL) ! _vm_thread->oops_do(&mark_and_push_closure, &mark_and_push_in_blobs); // Do the real work cm->follow_marking_stacks(); } --- 50,75 ---- NOT_PRODUCT(TraceTime tm("ThreadRootsMarkingTask", PrintGCDetails && TraceParallelOldGCTasks, true, gclog_or_tty)); ParCompactionManager* cm = ParCompactionManager::gc_thread_compaction_manager(which); + PSParallelCompact::MarkAndPushClosure mark_and_push_closure(cm); + CLDToOopClosure mark_and_push_from_clds(&mark_and_push_closure, true); CodeBlobToOopClosure mark_and_push_in_blobs(&mark_and_push_closure, /*do_marking=*/ true); if (_java_thread != NULL) ! _java_thread->oops_do( ! &mark_and_push_closure, ! &mark_and_push_from_clds, ! &mark_and_push_in_blobs); if (_vm_thread != NULL) ! _vm_thread->oops_do( ! &mark_and_push_closure, ! &mark_and_push_from_clds, ! &mark_and_push_in_blobs); // Do the real work cm->follow_marking_stacks(); }
*** 87,97 **** case threads: { ResourceMark rm; CodeBlobToOopClosure each_active_code_blob(&mark_and_push_closure, /*do_marking=*/ true); ! Threads::oops_do(&mark_and_push_closure, &each_active_code_blob); } break; case object_synchronizer: ObjectSynchronizer::oops_do(&mark_and_push_closure); --- 95,106 ---- case threads: { ResourceMark rm; CodeBlobToOopClosure each_active_code_blob(&mark_and_push_closure, /*do_marking=*/ true); ! CLDToOopClosure mark_and_push_from_cld(&mark_and_push_closure); ! Threads::oops_do(&mark_and_push_closure, &mark_and_push_from_cld, &each_active_code_blob); } break; case object_synchronizer: ObjectSynchronizer::oops_do(&mark_and_push_closure);
src/share/vm/gc_implementation/parallelScavenge/pcTasks.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File