< prev index next >

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

Print this page




 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 
< prev index next >