2772 return _liveness_cache[worker_id];
2773 }
2774
2775 void ShenandoahHeap::flush_liveness_cache(uint worker_id) {
2776 assert(worker_id < _max_workers, "sanity");
2777 jushort* ld = _liveness_cache[worker_id];
2778 for (uint i = 0; i < num_regions(); i++) {
2779 ShenandoahHeapRegion* r = get_region(i);
2780 jushort live = ld[i];
2781 if (live > 0) {
2782 r->increase_live_data_gc_words(live);
2783 ld[i] = 0;
2784 }
2785 }
2786 }
2787
2788 size_t ShenandoahHeap::obj_size(oop obj) const {
2789 return CollectedHeap::obj_size(obj) + ShenandoahBrooksPointer::word_size();
2790 }
2791
2792 BoolObjectClosure* ShenandoahIsAliveSelector::is_alive_closure() {
2793 return ShenandoahHeap::heap()->has_forwarded_objects() ? reinterpret_cast<BoolObjectClosure*>(&_fwd_alive_cl)
2794 : reinterpret_cast<BoolObjectClosure*>(&_alive_cl);
2795 }
|
2772 return _liveness_cache[worker_id];
2773 }
2774
2775 void ShenandoahHeap::flush_liveness_cache(uint worker_id) {
2776 assert(worker_id < _max_workers, "sanity");
2777 jushort* ld = _liveness_cache[worker_id];
2778 for (uint i = 0; i < num_regions(); i++) {
2779 ShenandoahHeapRegion* r = get_region(i);
2780 jushort live = ld[i];
2781 if (live > 0) {
2782 r->increase_live_data_gc_words(live);
2783 ld[i] = 0;
2784 }
2785 }
2786 }
2787
2788 size_t ShenandoahHeap::obj_size(oop obj) const {
2789 return CollectedHeap::obj_size(obj) + ShenandoahBrooksPointer::word_size();
2790 }
2791
2792 ptrdiff_t ShenandoahHeap::cell_header_size() const {
2793 return ShenandoahBrooksPointer::byte_size();
2794 }
2795
2796 BoolObjectClosure* ShenandoahIsAliveSelector::is_alive_closure() {
2797 return ShenandoahHeap::heap()->has_forwarded_objects() ? reinterpret_cast<BoolObjectClosure*>(&_fwd_alive_cl)
2798 : reinterpret_cast<BoolObjectClosure*>(&_alive_cl);
2799 }
|