8342081: Shenandoah: Remove extra ShenandoahMarkUpdateRefsSuperClosure

Reviewed-by: ysr
This commit is contained in:
Aleksey Shipilev 2024-10-16 07:13:59 +00:00
parent e4ff553c12
commit 724de68209
2 changed files with 11 additions and 20 deletions

@ -61,33 +61,23 @@ public:
}
};
class ShenandoahMarkUpdateRefsSuperClosure : public ShenandoahMarkRefsSuperClosure {
protected:
template <ShenandoahGenerationType GENERATION>
class ShenandoahMarkUpdateRefsClosure : public ShenandoahMarkRefsSuperClosure {
private:
ShenandoahHeap* const _heap;
template <class T, ShenandoahGenerationType GENERATION>
template <class T>
inline void work(T* p);
public:
ShenandoahMarkUpdateRefsSuperClosure(ShenandoahObjToScanQueue* q, ShenandoahReferenceProcessor* rp) :
ShenandoahMarkUpdateRefsClosure(ShenandoahObjToScanQueue* q, ShenandoahReferenceProcessor* rp) :
ShenandoahMarkRefsSuperClosure(q, rp),
_heap(ShenandoahHeap::heap()) {
assert(_heap->is_stw_gc_in_progress(), "Can only be used for STW GC");
};
};
}
template <ShenandoahGenerationType GENERATION>
class ShenandoahMarkUpdateRefsClosure : public ShenandoahMarkUpdateRefsSuperClosure {
private:
template <class T>
inline void do_oop_work(T* p) { work<T, GENERATION>(p); }
public:
ShenandoahMarkUpdateRefsClosure(ShenandoahObjToScanQueue* q, ShenandoahReferenceProcessor* rp) :
ShenandoahMarkUpdateRefsSuperClosure(q, rp) {}
virtual void do_oop(narrowOop* p) { do_oop_work(p); }
virtual void do_oop(oop* p) { do_oop_work(p); }
virtual void do_oop(narrowOop* p) { work(p); }
virtual void do_oop(oop* p) { work(p); }
};
template <ShenandoahGenerationType GENERATION>

@ -35,8 +35,9 @@ inline void ShenandoahMarkRefsSuperClosure::work(T* p) {
ShenandoahMark::mark_through_ref<T, GENERATION>(p, _queue, _mark_context, _weak);
}
template<class T, ShenandoahGenerationType GENERATION>
inline void ShenandoahMarkUpdateRefsSuperClosure::work(T* p) {
template<ShenandoahGenerationType GENERATION>
template<class T>
inline void ShenandoahMarkUpdateRefsClosure<GENERATION>::work(T* p) {
// Update the location
_heap->update_with_forwarded(p);