8387042: Shenandoah: Build time regression with LBE

Reviewed-by: wkemper, xpeng
This commit is contained in:
Aleksey Shipilev 2026-06-23 18:12:35 +00:00
parent b06aa89c60
commit 02c82240eb
2 changed files with 7 additions and 15 deletions

View File

@ -134,8 +134,8 @@ private:
template <class T>
inline void arraycopy_update(T* src, size_t count);
inline void clone_evacuation(oop src);
inline void clone_update(oop src);
template <bool EVAC>
inline void clone_work(oop src);
template <class T, bool HAS_FWD, bool EVAC, bool ENQUEUE>
inline void arraycopy_work(T* src, size_t count);

View File

@ -469,18 +469,10 @@ public:
virtual void do_oop(narrowOop* p) { do_oop_work(p); }
};
void ShenandoahBarrierSet::clone_evacuation(oop obj) {
assert(_heap->is_evacuation_in_progress(), "only during evacuation");
template <bool EVAC>
void ShenandoahBarrierSet::clone_work(oop obj) {
if (need_bulk_update(cast_from_oop<HeapWord*>(obj))) {
ShenandoahUpdateEvacForCloneOopClosure<true> cl;
obj->oop_iterate(&cl);
}
}
void ShenandoahBarrierSet::clone_update(oop obj) {
assert(_heap->is_update_refs_in_progress(), "only during update-refs");
if (need_bulk_update(cast_from_oop<HeapWord*>(obj))) {
ShenandoahUpdateEvacForCloneOopClosure<false> cl;
ShenandoahUpdateEvacForCloneOopClosure<EVAC> cl;
obj->oop_iterate(&cl);
}
}
@ -494,9 +486,9 @@ void ShenandoahBarrierSet::AccessBarrier<decorators, BarrierSetT>::clone_in_heap
if (gc_state != 0 && ShenandoahCloneBarrier) {
ShenandoahBarrierSet* bs = ShenandoahBarrierSet::barrier_set();
if ((gc_state & ShenandoahHeap::EVACUATION) != 0) {
bs->clone_evacuation(src);
bs->clone_work<true>(src);
} else if ((gc_state & ShenandoahHeap::UPDATE_REFS) != 0) {
bs->clone_update(src);
bs->clone_work<false>(src);
}
}