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 #ifdef ASSERT
245 class ShenandoahAssertNotForwardedClosure : public OopClosure {
246 private:
247 template <class T>
248 inline void do_oop_work(T* p);
249
250 public:
251 inline void do_oop(narrowOop* p);
252 inline void do_oop(oop* p);
253 };
254 #endif // ASSERT
255
256 #endif // SHARE_GC_SHENANDOAH_SHENANDOAHCLOSURES_HPP
|
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
|