171
172 class ShenandoahThreadRoots {
173 private:
174 const bool _is_par;
175 public:
176 ShenandoahThreadRoots(bool is_par);
177 ~ShenandoahThreadRoots();
178
179 void oops_do(OopClosure* oops_cl, CodeBlobClosure* code_cl, uint worker_id);
180 void threads_do(ThreadClosure* tc, uint worker_id);
181 };
182
183 class ShenandoahStringDedupRoots {
184 public:
185 ShenandoahStringDedupRoots();
186 ~ShenandoahStringDedupRoots();
187
188 void oops_do(BoolObjectClosure* is_alive, OopClosure* keep_alive, uint worker_id);
189 };
190
191 template <typename ITR>
192 class ShenandoahCodeCacheRoots {
193 private:
194 ITR _coderoots_iterator;
195 public:
196 ShenandoahCodeCacheRoots();
197 ~ShenandoahCodeCacheRoots();
198
199 void code_blobs_do(CodeBlobClosure* blob_cl, uint worker_id);
200 };
201
202 template <bool CONCURRENT, bool SINGLE_THREADED>
203 class ShenandoahClassLoaderDataRoots {
204 public:
205 ShenandoahClassLoaderDataRoots();
206 ~ShenandoahClassLoaderDataRoots();
207
208 void always_strong_cld_do(CLDClosure* clds, uint worker_id = 0);
209 void cld_do(CLDClosure* clds, uint worker_id = 0);
210 };
|
171
172 class ShenandoahThreadRoots {
173 private:
174 const bool _is_par;
175 public:
176 ShenandoahThreadRoots(bool is_par);
177 ~ShenandoahThreadRoots();
178
179 void oops_do(OopClosure* oops_cl, CodeBlobClosure* code_cl, uint worker_id);
180 void threads_do(ThreadClosure* tc, uint worker_id);
181 };
182
183 class ShenandoahStringDedupRoots {
184 public:
185 ShenandoahStringDedupRoots();
186 ~ShenandoahStringDedupRoots();
187
188 void oops_do(BoolObjectClosure* is_alive, OopClosure* keep_alive, uint worker_id);
189 };
190
191 class ShenandoahConcurrentStringDedupRoots {
192 public:
193 ShenandoahConcurrentStringDedupRoots();
194 ~ShenandoahConcurrentStringDedupRoots();
195
196 void oops_do(BoolObjectClosure* is_alive, OopClosure* keep_alive, uint worker_id);
197 };
198
199 template <typename ITR>
200 class ShenandoahCodeCacheRoots {
201 private:
202 ITR _coderoots_iterator;
203 public:
204 ShenandoahCodeCacheRoots();
205 ~ShenandoahCodeCacheRoots();
206
207 void code_blobs_do(CodeBlobClosure* blob_cl, uint worker_id);
208 };
209
210 template <bool CONCURRENT, bool SINGLE_THREADED>
211 class ShenandoahClassLoaderDataRoots {
212 public:
213 ShenandoahClassLoaderDataRoots();
214 ~ShenandoahClassLoaderDataRoots();
215
216 void always_strong_cld_do(CLDClosure* clds, uint worker_id = 0);
217 void cld_do(CLDClosure* clds, uint worker_id = 0);
218 };
|