77 public:
78 inline ShenandoahEvacuateUpdateRootsClosure();
79 inline void do_oop(oop* p);
80 inline void do_oop(narrowOop* p);
81
82 private:
83 template <class T>
84 inline void do_oop_work(T* p);
85 };
86
87 class ShenandoahEvacUpdateOopStorageRootsClosure : public BasicOopIterateClosure {
88 private:
89 ShenandoahHeap* _heap;
90 Thread* _thread;
91 public:
92 inline ShenandoahEvacUpdateOopStorageRootsClosure();
93 inline void do_oop(oop* p);
94 inline void do_oop(narrowOop* p);
95 };
96
97 class ShenandoahCodeBlobAndDisarmClosure: public CodeBlobToOopClosure {
98 private:
99 BarrierSetNMethod* const _bs;
100
101 public:
102 inline ShenandoahCodeBlobAndDisarmClosure(OopClosure* cl);
103 inline void do_code_blob(CodeBlob* cb);
104 };
105
106 class ShenandoahRendezvousClosure : public HandshakeClosure {
107 public:
108 inline ShenandoahRendezvousClosure();
109 inline void do_thread(Thread* thread);
110 };
111
112 #ifdef ASSERT
113 class ShenandoahAssertNotForwardedClosure : public OopClosure {
114 private:
115 template <class T>
116 inline void do_oop_work(T* p);
|
77 public:
78 inline ShenandoahEvacuateUpdateRootsClosure();
79 inline void do_oop(oop* p);
80 inline void do_oop(narrowOop* p);
81
82 private:
83 template <class T>
84 inline void do_oop_work(T* p);
85 };
86
87 class ShenandoahEvacUpdateOopStorageRootsClosure : public BasicOopIterateClosure {
88 private:
89 ShenandoahHeap* _heap;
90 Thread* _thread;
91 public:
92 inline ShenandoahEvacUpdateOopStorageRootsClosure();
93 inline void do_oop(oop* p);
94 inline void do_oop(narrowOop* p);
95 };
96
97 template <bool CONCURRENT, typename IsAlive, typename KeepAlive>
98 class ShenandoahCleanUpdateWeakOopsClosure : public OopClosure {
99 private:
100 IsAlive* _is_alive;
101 KeepAlive* _keep_alive;
102
103 public:
104 inline ShenandoahCleanUpdateWeakOopsClosure(IsAlive* is_alive, KeepAlive* keep_alive);
105 inline void do_oop(oop* p);
106 inline void do_oop(narrowOop* p);
107 };
108
109 class ShenandoahCodeBlobAndDisarmClosure: public CodeBlobToOopClosure {
110 private:
111 BarrierSetNMethod* const _bs;
112
113 public:
114 inline ShenandoahCodeBlobAndDisarmClosure(OopClosure* cl);
115 inline void do_code_blob(CodeBlob* cb);
116 };
117
118 class ShenandoahRendezvousClosure : public HandshakeClosure {
119 public:
120 inline ShenandoahRendezvousClosure();
121 inline void do_thread(Thread* thread);
122 };
123
124 #ifdef ASSERT
125 class ShenandoahAssertNotForwardedClosure : public OopClosure {
126 private:
127 template <class T>
128 inline void do_oop_work(T* p);
|