< prev index next >

src/hotspot/share/gc/shenandoah/shenandoahOldGC.cpp

Print this page
@@ -134,10 +134,17 @@
    // return from here with weak roots in progress. This is not a valid gc state
    // for any young collections (or allocation failures) that interrupt the old
    // collection.
    heap->concurrent_final_roots();
  
+   // Arm the nmethods to possibly flip the barriers to idle.
+   vmop_entry_final_verify();
+ 
+   // Now we are back at concurrent phase, process nmethods to fix their barriers.
+   // TODO: Is this really safe to do when we overlap with young GC?
+   ShenandoahCodeRoots::disarm_nmethods();
+ 
    // After concurrent old marking finishes, we reclaim immediate garbage. Further, we may also want to expand OLD in order
    // to make room for anticipated promotions and/or for mixed evacuations.  Mixed evacuations are especially likely to
    // follow the end of OLD marking.
    heap->rebuild_free_set_within_phase();
    heap->free_set()->log_status_under_lock();
< prev index next >