< prev index next >
src/hotspot/share/gc/shenandoah/shenandoahVerifier.cpp
Print this page
rev 55608 : Rename ShenandoahBrooksPointer to ShenandoahForwarding
rev 55609 : Eliminate extra forwarding pointer per object
@@ -135,11 +135,11 @@
switch (_options._verify_liveness) {
case ShenandoahVerifier::_verify_liveness_disable:
// skip
break;
case ShenandoahVerifier::_verify_liveness_complete:
- Atomic::add(obj->size() + ShenandoahForwarding::word_size(), &_ld[obj_reg->region_number()]);
+ Atomic::add((uint) obj->size(), &_ld[obj_reg->region_number()]);
// fallthrough for fast failure for un-live regions:
case ShenandoahVerifier::_verify_liveness_conservative:
check(ShenandoahAsserts::_safe_oop, obj, obj_reg->has_live(),
"Object must belong to region with live data");
break;
@@ -275,10 +275,11 @@
* Verify oop fields from this object.
* @param obj host object for verified fields
*/
void verify_oops_from(oop obj) {
_loc = obj;
+ obj = ShenandoahBarrierSet::resolve_forwarded_not_null(obj);
obj->oop_iterate(this);
_loc = NULL;
}
virtual void do_oop(oop* p) { do_oop_work(p); }
@@ -526,11 +527,11 @@
}
}
virtual void work_humongous(ShenandoahHeapRegion *r, ShenandoahVerifierStack& stack, ShenandoahVerifyOopClosure& cl) {
size_t processed = 0;
- HeapWord* obj = r->bottom() + ShenandoahForwarding::word_size();
+ HeapWord* obj = r->bottom();
if (_heap->complete_marking_context()->is_marked((oop)obj)) {
verify_and_follow(obj, stack, cl, &processed);
}
Atomic::add(processed, &_processed);
}
@@ -540,30 +541,30 @@
MarkBitMap* mark_bit_map = _heap->complete_marking_context()->mark_bit_map();
HeapWord* tams = _heap->complete_marking_context()->top_at_mark_start(r);
// Bitmaps, before TAMS
if (tams > r->bottom()) {
- HeapWord* start = r->bottom() + ShenandoahForwarding::word_size();
+ HeapWord* start = r->bottom();
HeapWord* addr = mark_bit_map->get_next_marked_addr(start, tams);
while (addr < tams) {
verify_and_follow(addr, stack, cl, &processed);
- addr += ShenandoahForwarding::word_size();
+ addr += 1;
if (addr < tams) {
addr = mark_bit_map->get_next_marked_addr(addr, tams);
}
}
}
// Size-based, after TAMS
{
HeapWord* limit = r->top();
- HeapWord* addr = tams + ShenandoahForwarding::word_size();
+ HeapWord* addr = tams;
while (addr < limit) {
verify_and_follow(addr, stack, cl, &processed);
- addr += oop(addr)->size() + ShenandoahForwarding::word_size();
+ addr += oop(addr)->size();
}
}
Atomic::add(processed, &_processed);
}
< prev index next >