165 virtual void do_oop(narrowOop* p) { do_oop_nv(p); }
166 virtual void do_oop(oop* p) { do_oop_nv(p); }
167 inline bool do_metadata_nv() { return true; }
168 virtual bool do_metadata() { return true; }
169 };
170
171 class ShenandoahUpdateHeapRefsClosure : public ExtendedOopClosure {
172 private:
173 ShenandoahHeap* _heap;
174 public:
175 ShenandoahUpdateHeapRefsClosure() :
176 _heap(ShenandoahHeap::heap()) {}
177
178 template <class T>
179 void do_oop_nv(T* p);
180
181 virtual void do_oop(narrowOop* p) { do_oop_nv(p); }
182 virtual void do_oop(oop* p) { do_oop_nv(p); }
183 };
184
185
186 #endif // SHARE_VM_GC_SHENANDOAH_SHENANDOAHOOPCLOSURES_HPP
|
165 virtual void do_oop(narrowOop* p) { do_oop_nv(p); }
166 virtual void do_oop(oop* p) { do_oop_nv(p); }
167 inline bool do_metadata_nv() { return true; }
168 virtual bool do_metadata() { return true; }
169 };
170
171 class ShenandoahUpdateHeapRefsClosure : public ExtendedOopClosure {
172 private:
173 ShenandoahHeap* _heap;
174 public:
175 ShenandoahUpdateHeapRefsClosure() :
176 _heap(ShenandoahHeap::heap()) {}
177
178 template <class T>
179 void do_oop_nv(T* p);
180
181 virtual void do_oop(narrowOop* p) { do_oop_nv(p); }
182 virtual void do_oop(oop* p) { do_oop_nv(p); }
183 };
184
185 class PartialEvacuateUpdateHeapClosure : public ExtendedOopClosure {
186 ShenandoahPartialGC* _partial_gc;
187 Thread* _thread;
188 SCMObjToScanQueue* _queue;
189 public:
190 PartialEvacuateUpdateHeapClosure(SCMObjToScanQueue* q) :
191 _partial_gc(ShenandoahHeap::heap()->partial_gc()),
192 _thread(Thread::current()), _queue(q) {}
193
194 template <class T>
195 void do_oop_nv(T* p);
196
197 void do_oop(oop* p) { do_oop_nv(p); }
198 void do_oop(narrowOop* p) { do_oop_nv(p); }
199 };
200
201
202 #endif // SHARE_VM_GC_SHENANDOAH_SHENANDOAHOOPCLOSURES_HPP
|