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

changeset 4298
d0aa87f04bd5
parent 4142
d8ce2825b193
child 5097
92ef81e2f571
     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  

mercurial