402 }
403
404 HeapWord* ShenandoahHeapRegion::top_prev_mark_bitmap() {
405 return _top_prev_mark_bitmap;
406 }
407
408 bool ShenandoahHeapRegion::allocated_after_prev_mark_start(HeapWord* addr) const {
409 return addr >= _top_at_prev_mark_start;
410 }
411
412 void ShenandoahHeapRegion::swap_top_at_mark_start() {
413 HeapWord* tmp = _top_at_prev_mark_start;
414 _top_at_prev_mark_start = _top_at_mark_start;
415 _top_at_mark_start = tmp;
416 ShenandoahHeap::heap()->set_top_at_mark_start(bottom(), tmp);
417 }
418
419 void ShenandoahHeapRegion::set_top_prev_mark_bitmap(HeapWord* top) {
420 _top_prev_mark_bitmap = top;
421 }
|
402 }
403
404 HeapWord* ShenandoahHeapRegion::top_prev_mark_bitmap() {
405 return _top_prev_mark_bitmap;
406 }
407
408 bool ShenandoahHeapRegion::allocated_after_prev_mark_start(HeapWord* addr) const {
409 return addr >= _top_at_prev_mark_start;
410 }
411
412 void ShenandoahHeapRegion::swap_top_at_mark_start() {
413 HeapWord* tmp = _top_at_prev_mark_start;
414 _top_at_prev_mark_start = _top_at_mark_start;
415 _top_at_mark_start = tmp;
416 ShenandoahHeap::heap()->set_top_at_mark_start(bottom(), tmp);
417 }
418
419 void ShenandoahHeapRegion::set_top_prev_mark_bitmap(HeapWord* top) {
420 _top_prev_mark_bitmap = top;
421 }
422
423 void ShenandoahHeapRegion::enter_critical() {
424 assert(_critical_pins >= 0, "sanity");
425 Atomic::inc(&_critical_pins);
426 }
427
428 void ShenandoahHeapRegion::exit_critical() {
429 Atomic::dec(&_critical_pins);
430 assert(_critical_pins >= 0, "sanity");
431 }
432
433 bool ShenandoahHeapRegion::is_pinned() {
434 assert(_critical_pins >= 0, "sanity");
435 return _critical_pins > 0;
436 }
|