equal
deleted
inserted
replaced
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); |