diff -r 00977607da34 -r 148e5441d916 src/share/vm/gc_implementation/g1/g1MarkSweep.cpp --- a/src/share/vm/gc_implementation/g1/g1MarkSweep.cpp Tue Sep 15 11:09:34 2009 -0700 +++ b/src/share/vm/gc_implementation/g1/g1MarkSweep.cpp Tue Sep 15 21:53:47 2009 -0700 @@ -116,9 +116,11 @@ SharedHeap* sh = SharedHeap::heap(); - sh->process_strong_roots(true, // Collecting permanent generation. + sh->process_strong_roots(true, // activeate StrongRootsScope + true, // Collecting permanent generation. SharedHeap::SO_SystemClasses, &GenMarkSweep::follow_root_closure, + &GenMarkSweep::follow_code_root_closure, &GenMarkSweep::follow_root_closure); // Process reference objects found during marking @@ -276,9 +278,11 @@ SharedHeap* sh = SharedHeap::heap(); - sh->process_strong_roots(true, // Collecting permanent generation. + sh->process_strong_roots(true, // activate StrongRootsScope + true, // Collecting permanent generation. SharedHeap::SO_AllClasses, &GenMarkSweep::adjust_root_pointer_closure, + NULL, // do not touch code cache here &GenMarkSweep::adjust_pointer_closure); g1h->ref_processor()->weak_oops_do(&GenMarkSweep::adjust_root_pointer_closure);