From 02c82240ebe87fefcba094c707e164d85fca0a94 Mon Sep 17 00:00:00 2001 From: Aleksey Shipilev Date: Tue, 23 Jun 2026 18:12:35 +0000 Subject: [PATCH] 8387042: Shenandoah: Build time regression with LBE Reviewed-by: wkemper, xpeng --- .../gc/shenandoah/shenandoahBarrierSet.hpp | 4 ++-- .../shenandoah/shenandoahBarrierSet.inline.hpp | 18 +++++------------- 2 files changed, 7 insertions(+), 15 deletions(-) diff --git a/src/hotspot/share/gc/shenandoah/shenandoahBarrierSet.hpp b/src/hotspot/share/gc/shenandoah/shenandoahBarrierSet.hpp index 8f8dbc9ac83..4b5620ff0bf 100644 --- a/src/hotspot/share/gc/shenandoah/shenandoahBarrierSet.hpp +++ b/src/hotspot/share/gc/shenandoah/shenandoahBarrierSet.hpp @@ -134,8 +134,8 @@ private: template inline void arraycopy_update(T* src, size_t count); - inline void clone_evacuation(oop src); - inline void clone_update(oop src); + template + inline void clone_work(oop src); template inline void arraycopy_work(T* src, size_t count); diff --git a/src/hotspot/share/gc/shenandoah/shenandoahBarrierSet.inline.hpp b/src/hotspot/share/gc/shenandoah/shenandoahBarrierSet.inline.hpp index e7ddfdb0f6a..1bdeb01618b 100644 --- a/src/hotspot/share/gc/shenandoah/shenandoahBarrierSet.inline.hpp +++ b/src/hotspot/share/gc/shenandoah/shenandoahBarrierSet.inline.hpp @@ -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 +void ShenandoahBarrierSet::clone_work(oop obj) { if (need_bulk_update(cast_from_oop(obj))) { - ShenandoahUpdateEvacForCloneOopClosure 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(obj))) { - ShenandoahUpdateEvacForCloneOopClosure cl; + ShenandoahUpdateEvacForCloneOopClosure cl; obj->oop_iterate(&cl); } } @@ -494,9 +486,9 @@ void ShenandoahBarrierSet::AccessBarrier::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(src); } else if ((gc_state & ShenandoahHeap::UPDATE_REFS) != 0) { - bs->clone_update(src); + bs->clone_work(src); } }