< prev index next >
src/hotspot/share/gc/shenandoah/shenandoahControlThread.cpp
Print this page
rev 60600 : 8251910: Shenandoah: assert(external_guard || result != __null) failed: Invalid JNI handle
*** 422,431 ****
--- 422,437 ----
heap->vmop_entry_final_updaterefs();
// Update references freed up collection set, kick the cleanup to reclaim the space.
heap->entry_cleanup_complete();
+ } else {
+ // Concurrent weak/strong root flags are unset concurrently. We depend on updateref GC safepoints
+ // to ensure the changes are visible to all mutators before gc cycle is completed.
+ // In case of no evacuation, updateref GC safepoints are skipped. Therefore, we will need
+ // to perform thread handshake to ensure their consistences.
+ heap->entry_rendezvous_roots();
}
// Cycle is complete
heap->heuristics()->record_success_concurrent();
heap->shenandoah_policy()->record_success_concurrent();
< prev index next >