--- old/src/hotspot/share/gc/shenandoah/shenandoahVerifier.cpp 2019-05-08 16:25:35.132724579 +0200 +++ new/src/hotspot/share/gc/shenandoah/shenandoahVerifier.cpp 2019-05-08 16:25:34.907727852 +0200 @@ -137,7 +137,7 @@ // 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(), @@ -277,6 +277,7 @@ */ void verify_oops_from(oop obj) { _loc = obj; + obj = ShenandoahBarrierSet::resolve_forwarded_not_null(obj); obj->oop_iterate(this); _loc = NULL; } @@ -528,7 +529,7 @@ 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); } @@ -542,12 +543,12 @@ // 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); } @@ -557,11 +558,11 @@ // 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(); } }