< prev index next >
src/share/vm/gc/shenandoah/shenandoahVerifier.cpp
Print this page
rev 14453 : Remove secondary marking bitmap.
@@ -57,14 +57,12 @@
ShenandoahHeapRegion *r = _heap->heap_region_containing(obj);
stringStream ss;
r->print_on(&ss);
msg.append(" " PTR_FORMAT " - klass " PTR_FORMAT " %s\n", p2i(obj), p2i(obj->klass()), obj->klass()->external_name());
- msg.append(" %3s allocated after complete mark start\n", _heap->allocated_after_complete_mark_start((HeapWord *) obj) ? "" : "not");
- msg.append(" %3s allocated after next mark start\n", _heap->allocated_after_next_mark_start((HeapWord *) obj) ? "" : "not");
- msg.append(" %3s marked complete\n", _heap->is_marked_complete(obj) ? "" : "not");
- msg.append(" %3s marked next\n", _heap->is_marked_next(obj) ? "" : "not");
+ msg.append(" %3s allocated after mark start\n", _heap->allocated_after_mark_start((HeapWord *) obj) ? "" : "not");
+ msg.append(" %3s marked\n", _heap->is_marked(obj) ? "" : "not");
msg.append(" %3s in collection set\n", _heap->in_collection_set(obj) ? "" : "not");
msg.append(" region: %s", ss.as_string());
}
void print_non_obj(ShenandoahMessageBuffer& msg, void* loc) {
@@ -304,17 +302,13 @@
switch (_options._verify_marked) {
case ShenandoahVerifier::_verify_marked_disable:
// skip
break;
- case ShenandoahVerifier::_verify_marked_next:
- verify(_safe_all, obj, _heap->is_marked_next(obj),
- "Must be marked in next bitmap");
- break;
- case ShenandoahVerifier::_verify_marked_complete:
- verify(_safe_all, obj, _heap->is_marked_complete(obj),
- "Must be marked in complete bitmap");
+ case ShenandoahVerifier::_verify_marked:
+ verify(_safe_all, obj, _heap->is_marked(obj),
+ "Must be marked");
break;
default:
assert(false, "Unhandled mark verification");
}
@@ -486,15 +480,15 @@
}
verify(r, r->capacity() == ShenandoahHeapRegion::region_size_bytes(),
"Capacity should match region size");
- verify(r, r->bottom() <= _heap->complete_top_at_mark_start(r->bottom()),
+ verify(r, r->bottom() <= _heap->top_at_mark_start(r->bottom()),
"Region top should not be less than bottom");
- verify(r, _heap->complete_top_at_mark_start(r->bottom()) <= r->top(),
- "Complete TAMS should not be larger than top");
+ verify(r, _heap->top_at_mark_start(r->bottom()) <= r->top(),
+ "TAMS should not be larger than top");
verify(r, r->get_live_data_bytes() <= r->capacity(),
"Live data cannot be larger than capacity");
verify(r, r->garbage() <= r->capacity(),
@@ -637,20 +631,20 @@
}
virtual void work_humongous(ShenandoahHeapRegion *r, ShenandoahVerifierStack& stack, ShenandoahVerifyOopClosure& cl) {
size_t processed = 0;
HeapWord* obj = r->bottom() + BrooksPointer::word_size();
- if (_heap->is_marked_complete((oop)obj)) {
+ if (_heap->is_marked((oop)obj)) {
verify_and_follow(obj, stack, cl, &processed);
}
Atomic::add(processed, &_processed);
}
virtual void work_regular(ShenandoahHeapRegion *r, ShenandoahVerifierStack &stack, ShenandoahVerifyOopClosure &cl) {
size_t processed = 0;
- MarkBitMap* mark_bit_map = _heap->complete_mark_bit_map();
- HeapWord* tams = _heap->complete_top_at_mark_start(r->bottom());
+ MarkBitMap* mark_bit_map = _heap->mark_bit_map();
+ HeapWord* tams = _heap->top_at_mark_start(r->bottom());
// Bitmaps, before TAMS
if (tams > r->bottom()) {
HeapWord* start = r->bottom() + BrooksPointer::word_size();
HeapWord* addr = mark_bit_map->getNextMarkedWordAddress(start, tams);
@@ -734,11 +728,11 @@
/* skip_cset = */ false,
/* skip_humongous_cont = */ false);
}
OrderAccess::fence();
- _heap->ensure_parsability(false);
+ _heap->make_tlabs_parsable(false);
// Allocate temporary bitmap for storing marking wavefront:
MemRegion mr = MemRegion(_verification_bit_map->startWord(), _verification_bit_map->endWord());
_verification_bit_map->clear_range_large(mr);
@@ -766,22 +760,22 @@
// before TAMS, we verify the bitmaps, if available; after TAMS, we walk until the top(). It mimics
// what marked_object_iterate is doing, without calling into that optimized (and possibly incorrect)
// version
size_t count_marked = 0;
- if (ShenandoahVerifyLevel >= 4 && marked == _verify_marked_complete) {
+ if (ShenandoahVerifyLevel >= 4 && marked == _verify_marked) {
ShenandoahVerifierMarkedRegionTask task(_heap->regions(), _verification_bit_map, ld, label, options);
_heap->workers()->run_task(&task);
count_marked = task.processed();
} else {
- guarantee(ShenandoahVerifyLevel < 4 || marked == _verify_marked_next || marked == _verify_marked_disable, "Should be");
+ guarantee(ShenandoahVerifyLevel < 4 || marked == _verify_marked_disable, "Should be");
}
// Step 4. Verify accumulated liveness data, if needed. Only reliable if verification level includes
// marked objects.
- if (ShenandoahVerifyLevel >= 4 && marked == _verify_marked_complete && liveness == _verify_liveness_complete) {
+ if (ShenandoahVerifyLevel >= 4 && marked == _verify_marked && liveness == _verify_liveness_complete) {
ShenandoahHeapRegionSet* set = _heap->regions();
for (size_t i = 0; i < _heap->num_regions(); i++) {
ShenandoahHeapRegion* r = set->get(i);
juint verf_live = 0;
@@ -851,11 +845,11 @@
void ShenandoahVerifier::verify_after_concmark() {
verify_at_safepoint(
"After Mark",
_verify_forwarded_none, // no forwarded references
- _verify_marked_complete, // bitmaps as precise as we can get
+ _verify_marked, // bitmaps as precise as we can get
_verify_matrix_disable, // matrix might be foobared
_verify_cset_none, // no references to cset anymore
_verify_liveness_complete, // liveness data must be complete here
_verify_regions_disable // trash regions not yet recycled
);
@@ -865,11 +859,11 @@
// Evacuation is always preceded by mark, but we want to have a sanity check after
// selecting the collection set, and (immediate) regions recycling
verify_at_safepoint(
"Before Evacuation",
_verify_forwarded_none, // no forwarded references
- _verify_marked_complete, // walk over marked objects too
+ _verify_marked, // walk over marked objects too
_verify_matrix_disable, // skip, verified after mark
_verify_cset_disable, // skip, verified after mark
_verify_liveness_disable, // skip, verified after mark
_verify_regions_disable // trash regions not yet recycled
);
@@ -877,11 +871,11 @@
void ShenandoahVerifier::verify_after_evacuation() {
verify_at_safepoint(
"After Evacuation",
_verify_forwarded_allow, // objects are still forwarded
- _verify_marked_complete, // bitmaps might be stale, but alloc-after-mark should be well
+ _verify_marked, // bitmaps might be stale, but alloc-after-mark should be well
_verify_matrix_disable, // matrix is inconsistent here
_verify_cset_forwarded, // all cset refs are fully forwarded
_verify_liveness_disable, // no reliable liveness data anymore
_verify_regions_notrash // trash regions have been recycled already
);
@@ -889,11 +883,11 @@
void ShenandoahVerifier::verify_before_updaterefs() {
verify_at_safepoint(
"Before Updating References",
_verify_forwarded_allow, // forwarded references allowed
- _verify_marked_complete, // bitmaps might be stale, but alloc-after-mark should be well
+ _verify_marked, // bitmaps might be stale, but alloc-after-mark should be well
_verify_matrix_disable, // matrix is inconsistent here
_verify_cset_forwarded, // all cset refs are fully forwarded
_verify_liveness_disable, // no reliable liveness data anymore
_verify_regions_notrash // trash regions have been recycled already
);
@@ -901,11 +895,11 @@
void ShenandoahVerifier::verify_after_updaterefs() {
verify_at_safepoint(
"After Updating References",
_verify_forwarded_none, // no forwarded references
- _verify_marked_complete, // bitmaps might be stale, but alloc-after-mark should be well
+ _verify_marked, // bitmaps might be stale, but alloc-after-mark should be well
_verify_matrix_conservative, // matrix is conservatively consistent
_verify_cset_none, // no cset references, all updated
_verify_liveness_disable, // no reliable liveness data anymore
_verify_regions_nocset // no cset regions, trash regions have appeared
);
@@ -913,11 +907,11 @@
void ShenandoahVerifier::verify_before_partial() {
verify_at_safepoint(
"Before Partial GC",
_verify_forwarded_none, // cannot have forwarded objects
- _verify_marked_complete, // bitmaps might be stale, but alloc-after-mark should be well
+ _verify_marked, // bitmaps might be stale, but alloc-after-mark should be well
_verify_matrix_conservative, // matrix is conservatively consistent
_verify_cset_none, // no cset references before partial
_verify_liveness_disable, // no reliable liveness data anymore
_verify_regions_notrash_nocset // no trash and no cset regions
);
@@ -925,11 +919,11 @@
void ShenandoahVerifier::verify_after_partial() {
verify_at_safepoint(
"After Partial GC",
_verify_forwarded_none, // cannot have forwarded objects
- _verify_marked_complete, // bitmaps might be stale, but alloc-after-mark should be well
+ _verify_marked, // bitmaps might be stale, but alloc-after-mark should be well
_verify_matrix_conservative, // matrix is conservatively consistent
_verify_cset_none, // no cset references left after partial
_verify_liveness_disable, // no reliable liveness data anymore
_verify_regions_nocset // no cset regions, trash regions allowed
);
@@ -949,11 +943,11 @@
void ShenandoahVerifier::verify_after_fullgc() {
verify_at_safepoint(
"After Full GC",
_verify_forwarded_none, // all objects are non-forwarded
- _verify_marked_complete, // all objects are marked in complete bitmap
+ _verify_marked, // all objects are marked
_verify_matrix_conservative, // matrix is conservatively consistent
_verify_cset_none, // no cset references
_verify_liveness_disable, // no reliable liveness data anymore
_verify_regions_notrash_nocset // no trash, no cset
);
< prev index next >