< prev index next >

src/hotspot/share/gc/shenandoah/shenandoahRootProcessor.inline.hpp

Print this page
rev 55321 : 8225572: Shenandoah: Move JNIHandles root out of serial roots
rev 55322 : 8225550: Shenandoah: Prevent SH::object_iterate() call's side-effects

@@ -124,10 +124,23 @@
   _thread_roots.threads_do(&tc_cl, 0);
   _code_roots.code_blobs_do(&code, 0);
 }
 
 template <typename ITR>
+void ShenandoahRootScanner<ITR>::strong_roots_do_unchecked(OopClosure* oops) {
+  CLDToOopClosure clds(oops, ClassLoaderData::_claim_strong);
+  MarkingCodeBlobClosure code(oops, !CodeBlobToOopClosure::FixRelocations);
+  ShenandoahParallelOopsDoThreadClosure tc_cl(oops, &code, NULL);
+  ResourceMark rm;
+
+  _serial_roots.oops_do(oops, 0);
+  _jni_roots.oops_do(oops, 0);
+  _cld_roots.clds_do(&clds, NULL, 0);
+  _thread_roots.threads_do(&tc_cl, 0);
+}
+
+template <typename ITR>
 void ShenandoahRootScanner<ITR>::strong_roots_do(uint worker_id, OopClosure* oops, CLDClosure* clds, CodeBlobClosure* code, ThreadClosure* tc) {
   assert(ShenandoahHeap::heap()->unload_classes(), "Should be used during class unloading");
   ShenandoahParallelOopsDoThreadClosure tc_cl(oops, code, tc);
   ResourceMark rm;
 
< prev index next >