11/*
2- * Copyright (c) 2015, 2019 , Red Hat, Inc. All rights reserved.
2+ * Copyright (c) 2015, 2021 , Red Hat, Inc. All rights reserved.
33 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
44 *
55 * This code is free software; you can redistribute it and/or modify it
@@ -75,10 +75,11 @@ class ShenandoahMarkUpdateRefsSuperClosure : public ShenandoahMarkRefsSuperClosu
7575 };
7676};
7777
78+ template <StringDedupMode STRING_DEDUP>
7879class ShenandoahMarkUpdateRefsClosure : public ShenandoahMarkUpdateRefsSuperClosure {
7980private:
8081 template <class T >
81- inline void do_oop_work (T* p) { work<T, NO_DEDUP >(p); }
82+ inline void do_oop_work (T* p) { work<T, STRING_DEDUP >(p); }
8283
8384public:
8485 ShenandoahMarkUpdateRefsClosure (ShenandoahObjToScanQueue* q, ShenandoahReferenceProcessor* rp) :
@@ -89,24 +90,11 @@ class ShenandoahMarkUpdateRefsClosure : public ShenandoahMarkUpdateRefsSuperClos
8990 virtual bool do_metadata () { return false ; }
9091};
9192
92- class ShenandoahMarkUpdateRefsDedupClosure : public ShenandoahMarkUpdateRefsSuperClosure {
93- private:
94- template <class T >
95- inline void do_oop_work (T* p) { work<T, ENQUEUE_DEDUP>(p); }
96-
97- public:
98- ShenandoahMarkUpdateRefsDedupClosure (ShenandoahObjToScanQueue* q, ShenandoahReferenceProcessor* rp) :
99- ShenandoahMarkUpdateRefsSuperClosure (q, rp) {}
100-
101- virtual void do_oop (narrowOop* p) { do_oop_work (p); }
102- virtual void do_oop (oop* p) { do_oop_work (p); }
103- virtual bool do_metadata () { return false ; }
104- };
105-
93+ template <StringDedupMode STRING_DEDUP>
10694class ShenandoahMarkUpdateRefsMetadataClosure : public ShenandoahMarkUpdateRefsSuperClosure {
10795private:
10896 template <class T >
109- inline void do_oop_work (T* p) { work<T, NO_DEDUP >(p); }
97+ inline void do_oop_work (T* p) { work<T, STRING_DEDUP >(p); }
11098
11199public:
112100 ShenandoahMarkUpdateRefsMetadataClosure (ShenandoahObjToScanQueue* q, ShenandoahReferenceProcessor* rp) :
@@ -117,24 +105,12 @@ class ShenandoahMarkUpdateRefsMetadataClosure : public ShenandoahMarkUpdateRefsS
117105 virtual bool do_metadata () { return true ; }
118106};
119107
120- class ShenandoahMarkUpdateRefsMetadataDedupClosure : public ShenandoahMarkUpdateRefsSuperClosure {
121- private:
122- template <class T >
123- inline void do_oop_work (T* p) { work<T, ENQUEUE_DEDUP>(p); }
124-
125- public:
126- ShenandoahMarkUpdateRefsMetadataDedupClosure (ShenandoahObjToScanQueue* q, ShenandoahReferenceProcessor* rp) :
127- ShenandoahMarkUpdateRefsSuperClosure (q, rp) {}
128-
129- virtual void do_oop (narrowOop* p) { do_oop_work (p); }
130- virtual void do_oop (oop* p) { do_oop_work (p); }
131- virtual bool do_metadata () { return true ; }
132- };
133108
109+ template <StringDedupMode STRING_DEDUP>
134110class ShenandoahMarkRefsClosure : public ShenandoahMarkRefsSuperClosure {
135111private:
136112 template <class T >
137- inline void do_oop_work (T* p) { work<T, NO_DEDUP >(p); }
113+ inline void do_oop_work (T* p) { work<T, STRING_DEDUP >(p); }
138114
139115public:
140116 ShenandoahMarkRefsClosure (ShenandoahObjToScanQueue* q, ShenandoahReferenceProcessor* rp) :
@@ -145,24 +121,12 @@ class ShenandoahMarkRefsClosure : public ShenandoahMarkRefsSuperClosure {
145121 virtual bool do_metadata () { return false ; }
146122};
147123
148- class ShenandoahMarkRefsDedupClosure : public ShenandoahMarkRefsSuperClosure {
149- private:
150- template <class T >
151- inline void do_oop_work (T* p) { work<T, ENQUEUE_DEDUP>(p); }
152-
153- public:
154- ShenandoahMarkRefsDedupClosure (ShenandoahObjToScanQueue* q, ShenandoahReferenceProcessor* rp) :
155- ShenandoahMarkRefsSuperClosure (q, rp) {};
156-
157- virtual void do_oop (narrowOop* p) { do_oop_work (p); }
158- virtual void do_oop (oop* p) { do_oop_work (p); }
159- virtual bool do_metadata () { return false ; }
160- };
161124
125+ template <StringDedupMode STRING_DEDUP>
162126class ShenandoahMarkRefsMetadataClosure : public ShenandoahMarkRefsSuperClosure {
163127private:
164128 template <class T >
165- inline void do_oop_work (T* p) { work<T, NO_DEDUP >(p); }
129+ inline void do_oop_work (T* p) { work<T, STRING_DEDUP >(p); }
166130
167131public:
168132 ShenandoahMarkRefsMetadataClosure (ShenandoahObjToScanQueue* q, ShenandoahReferenceProcessor* rp) :
@@ -173,20 +137,6 @@ class ShenandoahMarkRefsMetadataClosure : public ShenandoahMarkRefsSuperClosure
173137 virtual bool do_metadata () { return true ; }
174138};
175139
176- class ShenandoahMarkRefsMetadataDedupClosure : public ShenandoahMarkRefsSuperClosure {
177- private:
178- template <class T >
179- inline void do_oop_work (T* p) { work<T, ENQUEUE_DEDUP>(p); }
180-
181- public:
182- ShenandoahMarkRefsMetadataDedupClosure (ShenandoahObjToScanQueue* q, ShenandoahReferenceProcessor* rp) :
183- ShenandoahMarkRefsSuperClosure (q, rp) {};
184-
185- virtual void do_oop (narrowOop* p) { do_oop_work (p); }
186- virtual void do_oop (oop* p) { do_oop_work (p); }
187- virtual bool do_metadata () { return true ; }
188- };
189-
190140class ShenandoahUpdateRefsSuperClosure : public BasicOopIterateClosure {
191141protected:
192142 ShenandoahHeap* _heap;
0 commit comments