< prev index next > src/hotspot/share/gc/shenandoah/shenandoahDegeneratedGC.cpp
Print this page
#include "gc/shenandoah/shenandoahHeap.inline.hpp"
#include "gc/shenandoah/shenandoahMetrics.hpp"
#include "gc/shenandoah/shenandoahMonitoringSupport.hpp"
#include "gc/shenandoah/shenandoahOldGeneration.hpp"
#include "gc/shenandoah/shenandoahRootProcessor.inline.hpp"
+ #include "gc/shenandoah/shenandoahStackWatermark.hpp"
#include "gc/shenandoah/shenandoahSTWMark.hpp"
#include "gc/shenandoah/shenandoahUtils.hpp"
#include "gc/shenandoah/shenandoahVerifier.hpp"
#include "gc/shenandoah/shenandoahVMOperations.hpp"
#include "gc/shenandoah/shenandoahWorkerPolicy.hpp"
op_update_refs();
op_update_roots();
assert(!heap->cancelled_gc(), "STW reference update can not OOM");
}
- // Disarm nmethods that armed in concurrent cycle.
- // In above case, update roots should disarm them
- ShenandoahCodeRoots::disarm_nmethods();
-
op_cleanup_complete();
if (heap->mode()->is_generational()) {
ShenandoahGenerationalHeap::heap()->complete_degenerated_cycle();
}
ShouldNotReachHere();
}
DEBUG_ONLY(heap->assert_no_self_forwards());
+ // Leaving degenerated GC, we need to flip barriers back to idle.
+ ShenandoahCodeRoots::arm_nmethods();
+ ShenandoahCodeRoots::disarm_nmethods();
+
if (ShenandoahVerify) {
heap->verifier()->verify_after_degenerated(_generation);
}
if (VerifyAfterGC) {
< prev index next >