< prev index next > src/hotspot/share/gc/shenandoah/shenandoahVerifier.hpp
Print this page
class ShenandoahVerifier : public CHeapObj<mtGC> {
private:
ShenandoahHeap* _heap;
MarkBitMap* _verification_bit_map;
public:
+ typedef enum {
+ // Disable remembered set verification.
+ _verify_remembered_disable,
+
+ // Assure old objects are registered and remembered set cards within the read-only remembered set are dirty
+ // for every interesting pointer within each OLD ShenandoahHeapRegion between bottom() and top(). This is
+ // appropriate at the init_mark safepoint since all TLABS are retired before we reach this code.
+ _verify_remembered_for_marking,
+
+ // Assure old objects are registered and remembered set cards within the read-write remembered set are dirty
+ // for every interesting pointer within each OLD ShenandoahHeapRegion between bottom() and top().
+ _verify_remembered_for_updating_references,
+
+ // Assure old objects are registered and remembered set cards within the read-write remembered set are dirty
+ // for every interesting pointer within each OLD ShenandoahHeapRegion between bottom() and top().
+ _verify_remembered_after_full_gc
+ } VerifyRememberedSet;
+
typedef enum {
// Disable marked objects verification.
_verify_marked_disable,
// Objects should be marked in "next" bitmap.
// Nothing is in progress, some objects are forwarded
_verify_gcstate_forwarded,
// Evacuation is in progress, some objects are forwarded
! _verify_gcstate_evacuation
} VerifyGCState;
struct VerifyOptions {
VerifyForwarded _verify_forwarded;
VerifyMarked _verify_marked;
// Nothing is in progress, some objects are forwarded
_verify_gcstate_forwarded,
// Evacuation is in progress, some objects are forwarded
! _verify_gcstate_evacuation,
+
+ // Evacuation is done, objects are forwarded, updating is in progress
+ _verify_gcstate_updating
} VerifyGCState;
struct VerifyOptions {
VerifyForwarded _verify_forwarded;
VerifyMarked _verify_marked;
_verify_liveness(verify_liveness), _verify_regions(verify_regions),
_verify_gcstate(verify_gcstate) {}
};
private:
! void verify_at_safepoint(const char *label,
VerifyForwarded forwarded,
VerifyMarked marked,
VerifyCollectionSet cset,
VerifyLiveness liveness,
VerifyRegions regions,
_verify_liveness(verify_liveness), _verify_regions(verify_regions),
_verify_gcstate(verify_gcstate) {}
};
private:
! void verify_at_safepoint(const char* label,
+ VerifyRememberedSet remembered,
VerifyForwarded forwarded,
VerifyMarked marked,
VerifyCollectionSet cset,
VerifyLiveness liveness,
VerifyRegions regions,
void verify_after_evacuation();
void verify_before_updaterefs();
void verify_after_updaterefs();
void verify_before_fullgc();
void verify_after_fullgc();
+ void verify_after_generational_fullgc();
void verify_after_degenerated();
void verify_generic(VerifyOption option);
// Roots should only contain to-space oops
void verify_roots_in_to_space();
< prev index next >