910
911 void ShenandoahVerifier::verify_after_fullgc() {
912 verify_at_safepoint(
913 "After Full GC",
914 _verify_forwarded_none, // all objects are non-forwarded
915 _verify_marked_complete, // all objects are marked in complete bitmap
916 _verify_cset_none, // no cset references
917 _verify_liveness_disable, // no reliable liveness data anymore
918 _verify_regions_notrash_nocset, // no trash, no cset
919 _verify_gcstate_stable // full gc cleaned up everything
920 );
921 }
922
923 class ShenandoahVerifyNoForwared : public OopClosure {
924 private:
925 template <class T>
926 void do_oop_work(T* p) {
927 T o = RawAccess<>::oop_load(p);
928 if (!CompressedOops::is_null(o)) {
929 oop obj = CompressedOops::decode_not_null(o);
930 oop fwd = (oop) ShenandoahBrooksPointer::get_raw_unchecked(obj);
931 if (!oopDesc::equals_raw(obj, fwd)) {
932 ShenandoahAsserts::print_failure(ShenandoahAsserts::_safe_all, obj, p, NULL,
933 "Verify Roots", "Should not be forwarded", __FILE__, __LINE__);
934 }
935 }
936 }
937
938 public:
939 void do_oop(narrowOop* p) { do_oop_work(p); }
940 void do_oop(oop* p) { do_oop_work(p); }
941 };
942
943 void ShenandoahVerifier::verify_roots_no_forwarded() {
944 guarantee(ShenandoahSafepoint::is_at_shenandoah_safepoint(), "only when nothing else happens");
945 ShenandoahRootProcessor rp(_heap, 1, ShenandoahPhaseTimings::_num_phases); // no need for stats
946 ShenandoahVerifyNoForwared cl;
947 rp.process_all_roots_slow(&cl);
948 }
949
|
910
911 void ShenandoahVerifier::verify_after_fullgc() {
912 verify_at_safepoint(
913 "After Full GC",
914 _verify_forwarded_none, // all objects are non-forwarded
915 _verify_marked_complete, // all objects are marked in complete bitmap
916 _verify_cset_none, // no cset references
917 _verify_liveness_disable, // no reliable liveness data anymore
918 _verify_regions_notrash_nocset, // no trash, no cset
919 _verify_gcstate_stable // full gc cleaned up everything
920 );
921 }
922
923 class ShenandoahVerifyNoForwared : public OopClosure {
924 private:
925 template <class T>
926 void do_oop_work(T* p) {
927 T o = RawAccess<>::oop_load(p);
928 if (!CompressedOops::is_null(o)) {
929 oop obj = CompressedOops::decode_not_null(o);
930 oop fwd = (oop) ShenandoahForwarding::get_forwardee_raw_unchecked(obj);
931 if (!oopDesc::equals_raw(obj, fwd)) {
932 ShenandoahAsserts::print_failure(ShenandoahAsserts::_safe_all, obj, p, NULL,
933 "Verify Roots", "Should not be forwarded", __FILE__, __LINE__);
934 }
935 }
936 }
937
938 public:
939 void do_oop(narrowOop* p) { do_oop_work(p); }
940 void do_oop(oop* p) { do_oop_work(p); }
941 };
942
943 void ShenandoahVerifier::verify_roots_no_forwarded() {
944 guarantee(ShenandoahSafepoint::is_at_shenandoah_safepoint(), "only when nothing else happens");
945 ShenandoahRootProcessor rp(_heap, 1, ShenandoahPhaseTimings::_num_phases); // no need for stats
946 ShenandoahVerifyNoForwared cl;
947 rp.process_all_roots_slow(&cl);
948 }
949
|