< prev index next >
src/hotspot/share/gc/shenandoah/shenandoahVerifier.cpp
Print this page
*** 137,147 ****
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;
--- 137,147 ----
switch (_options._verify_liveness) {
case ShenandoahVerifier::_verify_liveness_disable:
// skip
break;
case ShenandoahVerifier::_verify_liveness_complete:
! Atomic::add(&_ld[obj_reg->region_number()], (uint) obj->size());
// 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;
*** 477,487 ****
ShenandoahVerifierTask task = stack.pop();
cl.verify_oops_from(task.obj());
}
}
! Atomic::add(processed, &_processed);
}
};
class ShenandoahVerifierMarkedRegionTask : public AbstractGangTask {
private:
--- 477,487 ----
ShenandoahVerifierTask task = stack.pop();
cl.verify_oops_from(task.obj());
}
}
! Atomic::add(&_processed, processed);
}
};
class ShenandoahVerifierMarkedRegionTask : public AbstractGangTask {
private:
*** 516,526 ****
ShenandoahVerifyOopClosure cl(&stack, _bitmap, _ld,
ShenandoahMessageBuffer("%s, Marked", _label),
_options);
while (true) {
! size_t v = Atomic::add(1u, &_claimed) - 1;
if (v < _heap->num_regions()) {
ShenandoahHeapRegion* r = _heap->get_region(v);
if (!r->is_humongous() && !r->is_trash()) {
work_regular(r, stack, cl);
} else if (r->is_humongous_start()) {
--- 516,526 ----
ShenandoahVerifyOopClosure cl(&stack, _bitmap, _ld,
ShenandoahMessageBuffer("%s, Marked", _label),
_options);
while (true) {
! size_t v = Atomic::add(&_claimed, 1u) - 1;
if (v < _heap->num_regions()) {
ShenandoahHeapRegion* r = _heap->get_region(v);
if (!r->is_humongous() && !r->is_trash()) {
work_regular(r, stack, cl);
} else if (r->is_humongous_start()) {
*** 536,546 ****
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);
}
virtual void work_regular(ShenandoahHeapRegion *r, ShenandoahVerifierStack &stack, ShenandoahVerifyOopClosure &cl) {
size_t processed = 0;
MarkBitMap* mark_bit_map = _heap->complete_marking_context()->mark_bit_map();
--- 536,546 ----
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);
}
virtual void work_regular(ShenandoahHeapRegion *r, ShenandoahVerifierStack &stack, ShenandoahVerifyOopClosure &cl) {
size_t processed = 0;
MarkBitMap* mark_bit_map = _heap->complete_marking_context()->mark_bit_map();
*** 569,579 ****
verify_and_follow(addr, stack, cl, &processed);
addr += oop(addr)->size();
}
}
! Atomic::add(processed, &_processed);
}
void verify_and_follow(HeapWord *addr, ShenandoahVerifierStack &stack, ShenandoahVerifyOopClosure &cl, size_t *processed) {
if (!_bitmap->par_mark(addr)) return;
--- 569,579 ----
verify_and_follow(addr, stack, cl, &processed);
addr += oop(addr)->size();
}
}
! Atomic::add(&_processed, processed);
}
void verify_and_follow(HeapWord *addr, ShenandoahVerifierStack &stack, ShenandoahVerifyOopClosure &cl, size_t *processed) {
if (!_bitmap->par_mark(addr)) return;
< prev index next >