hotspot/src/share/vm/memory/sharedHeap.cpp
changeset 14582 490bb6c0df7c
parent 13728 882756847a04
child 16370 4b75aa6388ab
--- a/hotspot/src/share/vm/memory/sharedHeap.cpp	Mon Nov 26 12:31:03 2012 -0500
+++ b/hotspot/src/share/vm/memory/sharedHeap.cpp	Tue Nov 27 10:13:20 2012 +0100
@@ -154,10 +154,12 @@
   if (!_process_strong_tasks->is_task_claimed(SH_PS_JNIHandles_oops_do))
     JNIHandles::oops_do(roots);
   // All threads execute this; the individual threads are task groups.
+  CLDToOopClosure roots_from_clds(roots);
+  CLDToOopClosure* roots_from_clds_p = (is_scavenging ? NULL : &roots_from_clds);
   if (ParallelGCThreads > 0) {
-    Threads::possibly_parallel_oops_do(roots, code_roots);
+    Threads::possibly_parallel_oops_do(roots, roots_from_clds_p ,code_roots);
   } else {
-    Threads::oops_do(roots, code_roots);
+    Threads::oops_do(roots, roots_from_clds_p, code_roots);
   }
   if (!_process_strong_tasks-> is_task_claimed(SH_PS_ObjectSynchronizer_oops_do))
     ObjectSynchronizer::oops_do(roots);