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

changeset 1435
a1423fe86a18
parent 1383
89e0543e1737
parent 1428
54b3b351d6f9
child 1746
2a1472c30599
     1.1 --- a/src/share/vm/gc_implementation/parallelScavenge/pcTasks.cpp	Fri Oct 02 11:26:25 2009 -0700
     1.2 +++ b/src/share/vm/gc_implementation/parallelScavenge/pcTasks.cpp	Fri Oct 09 15:18:52 2009 -0700
     1.3 @@ -39,12 +39,13 @@
     1.4    ParCompactionManager* cm =
     1.5      ParCompactionManager::gc_thread_compaction_manager(which);
     1.6    PSParallelCompact::MarkAndPushClosure mark_and_push_closure(cm);
     1.7 +  CodeBlobToOopClosure mark_and_push_in_blobs(&mark_and_push_closure, /*do_marking=*/ true);
     1.8  
     1.9    if (_java_thread != NULL)
    1.10 -    _java_thread->oops_do(&mark_and_push_closure);
    1.11 +    _java_thread->oops_do(&mark_and_push_closure, &mark_and_push_in_blobs);
    1.12  
    1.13    if (_vm_thread != NULL)
    1.14 -    _vm_thread->oops_do(&mark_and_push_closure);
    1.15 +    _vm_thread->oops_do(&mark_and_push_closure, &mark_and_push_in_blobs);
    1.16  
    1.17    // Do the real work
    1.18    cm->drain_marking_stacks(&mark_and_push_closure);
    1.19 @@ -78,7 +79,8 @@
    1.20      case threads:
    1.21      {
    1.22        ResourceMark rm;
    1.23 -      Threads::oops_do(&mark_and_push_closure);
    1.24 +      CodeBlobToOopClosure each_active_code_blob(&mark_and_push_closure, /*do_marking=*/ true);
    1.25 +      Threads::oops_do(&mark_and_push_closure, &each_active_code_blob);
    1.26      }
    1.27      break;
    1.28  
    1.29 @@ -106,6 +108,11 @@
    1.30        vmSymbols::oops_do(&mark_and_push_closure);
    1.31        break;
    1.32  
    1.33 +    case code_cache:
    1.34 +      // Do not treat nmethods as strong roots for mark/sweep, since we can unload them.
    1.35 +      //CodeCache::scavenge_root_nmethods_do(CodeBlobToOopClosure(&mark_and_push_closure));
    1.36 +      break;
    1.37 +
    1.38      default:
    1.39        fatal("Unknown root type");
    1.40    }

mercurial