< prev index next >

src/hotspot/share/gc/shenandoah/shenandoahClosures.hpp

Print this page

163 };
164 
165 using ShenandoahEvacuateUpdateMetadataClosure     = ShenandoahEvacuateUpdateRootClosureBase<false, true>;
166 using ShenandoahEvacuateUpdateRootsClosure        = ShenandoahEvacuateUpdateRootClosureBase<true, false>;
167 using ShenandoahContextEvacuateUpdateRootsClosure = ShenandoahEvacuateUpdateRootClosureBase<true, true>;
168 
169 
170 template <bool CONCURRENT, typename IsAlive, typename KeepAlive>
171 class ShenandoahCleanUpdateWeakOopsClosure : public OopClosure {
172 private:
173   IsAlive*    _is_alive;
174   KeepAlive*  _keep_alive;
175 
176 public:
177   inline ShenandoahCleanUpdateWeakOopsClosure(IsAlive* is_alive, KeepAlive* keep_alive);
178   inline void do_oop(oop* p);
179   inline void do_oop(narrowOop* p);
180 };
181 
182 class ShenandoahNMethodAndDisarmClosure : public NMethodToOopClosure {
183 private:
184   BarrierSetNMethod* const _bs;
185 
186 public:
187   inline ShenandoahNMethodAndDisarmClosure(OopClosure* cl);
188   inline void do_nmethod(nmethod* nm);
189 };
190 
191 
192 //
193 // ========= Update References
194 //
195 
196 template <ShenandoahGenerationType GENERATION>
197 class ShenandoahMarkUpdateRefsClosure : public ShenandoahMarkRefsSuperClosure {
198 private:
199   template <class T>
200   inline void work(T* p);
201 
202 public:
203   ShenandoahMarkUpdateRefsClosure(ShenandoahObjToScanQueue* q, ShenandoahReferenceProcessor* rp, ShenandoahObjToScanQueue* old_q);
204 
205   virtual void do_oop(narrowOop* p) { work(p); }

227   virtual void do_oop(narrowOop* p) { work(p); }
228   virtual void do_oop(oop* p)       { work(p); }
229 };
230 
231 
232 class ShenandoahFlushSATB : public ThreadClosure {
233 private:
234   SATBMarkQueueSet& _satb_qset;
235 
236 public:
237   explicit ShenandoahFlushSATB(SATBMarkQueueSet& satb_qset) : _satb_qset(satb_qset) {}
238 
239   inline void do_thread(Thread* thread) override;
240 };
241 
242 
243 //
244 // ========= Utilities
245 //
246 






247 #ifdef ASSERT
248 class ShenandoahAssertNotForwardedClosure : public OopClosure {
249 private:
250   template <class T>
251   inline void do_oop_work(T* p);
252 
253 public:
254   inline void do_oop(narrowOop* p);
255   inline void do_oop(oop* p);
256 };
257 #endif // ASSERT
258 
259 #endif // SHARE_GC_SHENANDOAH_SHENANDOAHCLOSURES_HPP

163 };
164 
165 using ShenandoahEvacuateUpdateMetadataClosure     = ShenandoahEvacuateUpdateRootClosureBase<false, true>;
166 using ShenandoahEvacuateUpdateRootsClosure        = ShenandoahEvacuateUpdateRootClosureBase<true, false>;
167 using ShenandoahContextEvacuateUpdateRootsClosure = ShenandoahEvacuateUpdateRootClosureBase<true, true>;
168 
169 
170 template <bool CONCURRENT, typename IsAlive, typename KeepAlive>
171 class ShenandoahCleanUpdateWeakOopsClosure : public OopClosure {
172 private:
173   IsAlive*    _is_alive;
174   KeepAlive*  _keep_alive;
175 
176 public:
177   inline ShenandoahCleanUpdateWeakOopsClosure(IsAlive* is_alive, KeepAlive* keep_alive);
178   inline void do_oop(oop* p);
179   inline void do_oop(narrowOop* p);
180 };
181 
182 class ShenandoahNMethodAndDisarmClosure : public NMethodToOopClosure {



183 public:
184   inline ShenandoahNMethodAndDisarmClosure(OopClosure* cl);
185   inline void do_nmethod(nmethod* nm);
186 };
187 
188 
189 //
190 // ========= Update References
191 //
192 
193 template <ShenandoahGenerationType GENERATION>
194 class ShenandoahMarkUpdateRefsClosure : public ShenandoahMarkRefsSuperClosure {
195 private:
196   template <class T>
197   inline void work(T* p);
198 
199 public:
200   ShenandoahMarkUpdateRefsClosure(ShenandoahObjToScanQueue* q, ShenandoahReferenceProcessor* rp, ShenandoahObjToScanQueue* old_q);
201 
202   virtual void do_oop(narrowOop* p) { work(p); }

224   virtual void do_oop(narrowOop* p) { work(p); }
225   virtual void do_oop(oop* p)       { work(p); }
226 };
227 
228 
229 class ShenandoahFlushSATB : public ThreadClosure {
230 private:
231   SATBMarkQueueSet& _satb_qset;
232 
233 public:
234   explicit ShenandoahFlushSATB(SATBMarkQueueSet& satb_qset) : _satb_qset(satb_qset) {}
235 
236   inline void do_thread(Thread* thread) override;
237 };
238 
239 
240 //
241 // ========= Utilities
242 //
243 
244 class ShenandoahNoOpClosure : public OopClosure {
245 public:
246   inline void do_oop(oop* p)       { }
247   inline void do_oop(narrowOop* p) { }
248 };
249 
250 #ifdef ASSERT
251 class ShenandoahAssertNotForwardedClosure : public OopClosure {
252 private:
253   template <class T>
254   inline void do_oop_work(T* p);
255 
256 public:
257   inline void do_oop(narrowOop* p);
258   inline void do_oop(oop* p);
259 };
260 #endif // ASSERT
261 
262 #endif // SHARE_GC_SHENANDOAH_SHENANDOAHCLOSURES_HPP
< prev index next >