< 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,145 **** 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()]); // 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; --- 135,145 ---- switch (_options._verify_liveness) { case ShenandoahVerifier::_verify_liveness_disable: // skip break; case ShenandoahVerifier::_verify_liveness_complete: ! 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,284 **** --- 275,285 ---- * 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,536 **** } } virtual void work_humongous(ShenandoahHeapRegion *r, ShenandoahVerifierStack& stack, ShenandoahVerifyOopClosure& cl) { size_t processed = 0; ! HeapWord* obj = r->bottom() + ShenandoahForwarding::word_size(); if (_heap->complete_marking_context()->is_marked((oop)obj)) { verify_and_follow(obj, stack, cl, &processed); } Atomic::add(processed, &_processed); } --- 527,537 ---- } } virtual void work_humongous(ShenandoahHeapRegion *r, ShenandoahVerifierStack& stack, ShenandoahVerifyOopClosure& cl) { size_t processed = 0; ! 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,569 **** 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* addr = mark_bit_map->get_next_marked_addr(start, tams); while (addr < tams) { verify_and_follow(addr, stack, cl, &processed); ! addr += ShenandoahForwarding::word_size(); 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(); while (addr < limit) { verify_and_follow(addr, stack, cl, &processed); ! addr += oop(addr)->size() + ShenandoahForwarding::word_size(); } } Atomic::add(processed, &_processed); } --- 541,570 ---- 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(); HeapWord* addr = mark_bit_map->get_next_marked_addr(start, tams); while (addr < tams) { verify_and_follow(addr, stack, cl, &processed); ! 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; while (addr < limit) { verify_and_follow(addr, stack, cl, &processed); ! addr += oop(addr)->size(); } } Atomic::add(processed, &_processed); }
< prev index next >