< prev index next >
src/hotspot/share/gc/g1/g1HeapVerifier.cpp
Print this page
rev 49484 : imported patch 8197573-remove-secondary-free-list
rev 49494 : imported patch 8199742-collectorstate-fixes
rev 49495 : [mq]: 8199742-stefanj-review
rev 49497 : [mq]: 8200234-g1concurrentmark-refactorings
@@ -649,14 +649,12 @@
HeapWord* end = hr->end();
bool res_p = verify_no_bits_over_tams("prev", prev_bitmap, ptams, end);
bool res_n = true;
- // We reset mark_or_rebuild_in_progress() before we reset _cmThread->in_progress() and in this window
- // we do the clearing of the next bitmap concurrently. Thus, we can not verify the bitmap
- // if we happen to be in that state.
- if (_g1h->collector_state()->mark_or_rebuild_in_progress() || !_g1h->_cmThread->in_progress()) {
+ // We cannot verify the next bitmap while we are about to clear it.
+ if (!_g1h->collector_state()->clearing_next_bitmap()) {
res_n = verify_no_bits_over_tams("next", next_bitmap, ntams, end);
}
if (!res_p || !res_n) {
log_error(gc, verify)("#### Bitmap verification failed for " HR_FORMAT, HR_FORMAT_PARAMS(hr));
log_error(gc, verify)("#### Caller: %s", caller);
@@ -664,11 +662,13 @@
}
return true;
}
void G1HeapVerifier::check_bitmaps(const char* caller, HeapRegion* hr) {
- if (!G1VerifyBitmaps) return;
+ if (!G1VerifyBitmaps) {
+ return;
+ }
guarantee(verify_bitmaps(caller, hr), "bitmap verification");
}
class G1VerifyBitmapClosure : public HeapRegionClosure {
@@ -691,11 +691,13 @@
return false;
}
};
void G1HeapVerifier::check_bitmaps(const char* caller) {
- if (!G1VerifyBitmaps) return;
+ if (!G1VerifyBitmaps) {
+ return;
+ }
G1VerifyBitmapClosure cl(caller, this);
_g1h->heap_region_iterate(&cl);
guarantee(!cl.failures(), "bitmap verification");
}
< prev index next >