src/hotspot/share/gc/g1/g1HeapVerifier.cpp
changeset 48969 7eb296a8ce2c
parent 48890 f9884e190f2b
child 49164 7e958a8ebcd3
equal deleted inserted replaced
48893:454518b338b0 48969:7eb296a8ce2c
   271 class VerifyArchivePointerRegionClosure: public HeapRegionClosure {
   271 class VerifyArchivePointerRegionClosure: public HeapRegionClosure {
   272 private:
   272 private:
   273   G1CollectedHeap* _g1h;
   273   G1CollectedHeap* _g1h;
   274 public:
   274 public:
   275   VerifyArchivePointerRegionClosure(G1CollectedHeap* g1h) { }
   275   VerifyArchivePointerRegionClosure(G1CollectedHeap* g1h) { }
   276   virtual bool doHeapRegion(HeapRegion* r) {
   276   virtual bool do_heap_region(HeapRegion* r) {
   277    if (r->is_archive()) {
   277    if (r->is_archive()) {
   278       VerifyObjectInArchiveRegionClosure verify_oop_pointers(r, false);
   278       VerifyObjectInArchiveRegionClosure verify_oop_pointers(r, false);
   279       r->object_iterate(&verify_oop_pointers);
   279       r->object_iterate(&verify_oop_pointers);
   280     }
   280     }
   281     return false;
   281     return false;
   304 
   304 
   305   bool failures() {
   305   bool failures() {
   306     return _failures;
   306     return _failures;
   307   }
   307   }
   308 
   308 
   309   bool doHeapRegion(HeapRegion* r) {
   309   bool do_heap_region(HeapRegion* r) {
   310     // For archive regions, verify there are no heap pointers to
   310     // For archive regions, verify there are no heap pointers to
   311     // non-pinned regions. For all others, verify liveness info.
   311     // non-pinned regions. For all others, verify liveness info.
   312     if (r->is_closed_archive()) {
   312     if (r->is_closed_archive()) {
   313       VerifyObjectInArchiveRegionClosure verify_oop_pointers(r, false);
   313       VerifyObjectInArchiveRegionClosure verify_oop_pointers(r, false);
   314       r->object_iterate(&verify_oop_pointers);
   314       r->object_iterate(&verify_oop_pointers);
   496                            HeapRegionSet* humongous_set,
   496                            HeapRegionSet* humongous_set,
   497                            HeapRegionManager* hrm) :
   497                            HeapRegionManager* hrm) :
   498     _old_set(old_set), _humongous_set(humongous_set), _hrm(hrm),
   498     _old_set(old_set), _humongous_set(humongous_set), _hrm(hrm),
   499     _old_count(), _humongous_count(), _free_count(){ }
   499     _old_count(), _humongous_count(), _free_count(){ }
   500 
   500 
   501   bool doHeapRegion(HeapRegion* hr) {
   501   bool do_heap_region(HeapRegion* hr) {
   502     if (hr->is_young()) {
   502     if (hr->is_young()) {
   503       // TODO
   503       // TODO
   504     } else if (hr->is_humongous()) {
   504     } else if (hr->is_humongous()) {
   505       assert(hr->containing_set() == _humongous_set, "Heap region %u is humongous but not in humongous set.", hr->hrm_index());
   505       assert(hr->containing_set() == _humongous_set, "Heap region %u is humongous but not in humongous set.", hr->hrm_index());
   506       _humongous_count++;
   506       _humongous_count++;
   606   G1HeapVerifier* _verifier;
   606   G1HeapVerifier* _verifier;
   607   G1SATBCardTableModRefBS* _ct_bs;
   607   G1SATBCardTableModRefBS* _ct_bs;
   608 public:
   608 public:
   609   G1VerifyCardTableCleanup(G1HeapVerifier* verifier, G1SATBCardTableModRefBS* ct_bs)
   609   G1VerifyCardTableCleanup(G1HeapVerifier* verifier, G1SATBCardTableModRefBS* ct_bs)
   610     : _verifier(verifier), _ct_bs(ct_bs) { }
   610     : _verifier(verifier), _ct_bs(ct_bs) { }
   611   virtual bool doHeapRegion(HeapRegion* r) {
   611   virtual bool do_heap_region(HeapRegion* r) {
   612     if (r->is_survivor()) {
   612     if (r->is_survivor()) {
   613       _verifier->verify_dirty_region(r);
   613       _verifier->verify_dirty_region(r);
   614     } else {
   614     } else {
   615       _verifier->verify_not_dirty_region(r);
   615       _verifier->verify_not_dirty_region(r);
   616     }
   616     }
   652 class G1VerifyDirtyYoungListClosure : public HeapRegionClosure {
   652 class G1VerifyDirtyYoungListClosure : public HeapRegionClosure {
   653 private:
   653 private:
   654   G1HeapVerifier* _verifier;
   654   G1HeapVerifier* _verifier;
   655 public:
   655 public:
   656   G1VerifyDirtyYoungListClosure(G1HeapVerifier* verifier) : HeapRegionClosure(), _verifier(verifier) { }
   656   G1VerifyDirtyYoungListClosure(G1HeapVerifier* verifier) : HeapRegionClosure(), _verifier(verifier) { }
   657   virtual bool doHeapRegion(HeapRegion* r) {
   657   virtual bool do_heap_region(HeapRegion* r) {
   658     _verifier->verify_dirty_region(r);
   658     _verifier->verify_dirty_region(r);
   659     return false;
   659     return false;
   660   }
   660   }
   661 };
   661 };
   662 
   662 
   719   G1VerifyBitmapClosure(const char* caller, G1HeapVerifier* verifier) :
   719   G1VerifyBitmapClosure(const char* caller, G1HeapVerifier* verifier) :
   720     _caller(caller), _verifier(verifier), _failures(false) { }
   720     _caller(caller), _verifier(verifier), _failures(false) { }
   721 
   721 
   722   bool failures() { return _failures; }
   722   bool failures() { return _failures; }
   723 
   723 
   724   virtual bool doHeapRegion(HeapRegion* hr) {
   724   virtual bool do_heap_region(HeapRegion* hr) {
   725     bool result = _verifier->verify_bitmaps(_caller, hr);
   725     bool result = _verifier->verify_bitmaps(_caller, hr);
   726     if (!result) {
   726     if (!result) {
   727       _failures = true;
   727       _failures = true;
   728     }
   728     }
   729     return false;
   729     return false;
   742  private:
   742  private:
   743   bool _failures;
   743   bool _failures;
   744  public:
   744  public:
   745   G1CheckCSetFastTableClosure() : HeapRegionClosure(), _failures(false) { }
   745   G1CheckCSetFastTableClosure() : HeapRegionClosure(), _failures(false) { }
   746 
   746 
   747   virtual bool doHeapRegion(HeapRegion* hr) {
   747   virtual bool do_heap_region(HeapRegion* hr) {
   748     uint i = hr->hrm_index();
   748     uint i = hr->hrm_index();
   749     InCSetState cset_state = (InCSetState) G1CollectedHeap::heap()->_in_cset_fast_test.get_by_index(i);
   749     InCSetState cset_state = (InCSetState) G1CollectedHeap::heap()->_in_cset_fast_test.get_by_index(i);
   750     if (hr->is_humongous()) {
   750     if (hr->is_humongous()) {
   751       if (hr->in_collection_set()) {
   751       if (hr->in_collection_set()) {
   752         log_error(gc, verify)("## humongous region %u in CSet", i);
   752         log_error(gc, verify)("## humongous region %u in CSet", i);