54 |
54 |
55 class MarkSweep : AllStatic { |
55 class MarkSweep : AllStatic { |
56 // |
56 // |
57 // Inline closure decls |
57 // Inline closure decls |
58 // |
58 // |
59 class FollowRootClosure: public OopsInGenClosure { |
59 class FollowRootClosure: public BasicOopsInGenClosure { |
60 public: |
60 public: |
61 virtual void do_oop(oop* p); |
61 virtual void do_oop(oop* p); |
62 virtual void do_oop(narrowOop* p); |
62 virtual void do_oop(narrowOop* p); |
63 }; |
63 }; |
64 |
64 |
168 static void follow_array(objArrayOop array); |
168 static void follow_array(objArrayOop array); |
169 |
169 |
170 static void follow_array_chunk(objArrayOop array, int index); |
170 static void follow_array_chunk(objArrayOop array, int index); |
171 }; |
171 }; |
172 |
172 |
173 class MarkAndPushClosure: public ExtendedOopClosure { |
173 class MarkAndPushClosure: public OopIterateClosure { |
174 public: |
174 public: |
175 template <typename T> void do_oop_nv(T* p); |
175 template <typename T> void do_oop_work(T* p); |
176 virtual void do_oop(oop* p); |
176 virtual void do_oop(oop* p); |
177 virtual void do_oop(narrowOop* p); |
177 virtual void do_oop(narrowOop* p); |
178 |
178 |
179 virtual bool do_metadata(); |
179 virtual bool do_metadata() { return true; } |
180 bool do_metadata_nv(); |
|
181 |
|
182 virtual void do_klass(Klass* k); |
180 virtual void do_klass(Klass* k); |
183 void do_klass_nv(Klass* k); |
|
184 |
|
185 virtual void do_cld(ClassLoaderData* cld); |
181 virtual void do_cld(ClassLoaderData* cld); |
186 void do_cld_nv(ClassLoaderData* cld); |
|
187 |
182 |
188 void set_ref_discoverer(ReferenceDiscoverer* rd) { |
183 void set_ref_discoverer(ReferenceDiscoverer* rd) { |
189 set_ref_discoverer_internal(rd); |
184 set_ref_discoverer_internal(rd); |
190 } |
185 } |
191 }; |
186 }; |
192 |
187 |
193 class AdjustPointerClosure: public OopsInGenClosure { |
188 class AdjustPointerClosure: public BasicOopsInGenClosure { |
194 public: |
189 public: |
195 template <typename T> void do_oop_nv(T* p); |
190 template <typename T> void do_oop_work(T* p); |
196 virtual void do_oop(oop* p); |
191 virtual void do_oop(oop* p); |
197 virtual void do_oop(narrowOop* p); |
192 virtual void do_oop(narrowOop* p); |
198 virtual ReferenceIterationMode reference_iteration_mode() { return DO_FIELDS; } |
193 virtual ReferenceIterationMode reference_iteration_mode() { return DO_FIELDS; } |
199 |
194 |
200 // This closure provides its own oop verification code. |
195 // This closure provides its own oop verification code. |