@@ -61,33 +61,23 @@ class ShenandoahMarkRefsSuperClosure : public MetadataVisitingOopIterateClosure
61
61
}
62
62
};
63
63
64
- class ShenandoahMarkUpdateRefsSuperClosure : public ShenandoahMarkRefsSuperClosure {
65
- protected:
64
+ template <ShenandoahGenerationType GENERATION>
65
+ class ShenandoahMarkUpdateRefsClosure : public ShenandoahMarkRefsSuperClosure {
66
+ private:
66
67
ShenandoahHeap* const _heap;
67
68
68
- template <class T , ShenandoahGenerationType GENERATION >
69
+ template <class T >
69
70
inline void work (T* p);
70
71
71
72
public:
72
- ShenandoahMarkUpdateRefsSuperClosure (ShenandoahObjToScanQueue* q, ShenandoahReferenceProcessor* rp) :
73
+ ShenandoahMarkUpdateRefsClosure (ShenandoahObjToScanQueue* q, ShenandoahReferenceProcessor* rp) :
73
74
ShenandoahMarkRefsSuperClosure (q, rp),
74
75
_heap (ShenandoahHeap::heap()) {
75
76
assert (_heap->is_stw_gc_in_progress (), " Can only be used for STW GC" );
76
- };
77
- };
78
-
79
- template <ShenandoahGenerationType GENERATION>
80
- class ShenandoahMarkUpdateRefsClosure : public ShenandoahMarkUpdateRefsSuperClosure {
81
- private:
82
- template <class T >
83
- inline void do_oop_work (T* p) { work<T, GENERATION>(p); }
84
-
85
- public:
86
- ShenandoahMarkUpdateRefsClosure (ShenandoahObjToScanQueue* q, ShenandoahReferenceProcessor* rp) :
87
- ShenandoahMarkUpdateRefsSuperClosure (q, rp) {}
77
+ }
88
78
89
- virtual void do_oop (narrowOop* p) { do_oop_work (p); }
90
- virtual void do_oop (oop* p) { do_oop_work (p); }
79
+ virtual void do_oop (narrowOop* p) { work (p); }
80
+ virtual void do_oop (oop* p) { work (p); }
91
81
};
92
82
93
83
template <ShenandoahGenerationType GENERATION>
0 commit comments