equal
deleted
inserted
replaced
144 template<typename Closure> inline void weak_oops_do(Closure* closure); |
144 template<typename Closure> inline void weak_oops_do(Closure* closure); |
145 |
145 |
146 template<typename IsAliveClosure, typename Closure> |
146 template<typename IsAliveClosure, typename Closure> |
147 inline void weak_oops_do(IsAliveClosure* is_alive, Closure* closure); |
147 inline void weak_oops_do(IsAliveClosure* is_alive, Closure* closure); |
148 |
148 |
149 #if INCLUDE_ALL_GCS |
|
150 // Parallel iteration is for the exclusive use of the GC. |
149 // Parallel iteration is for the exclusive use of the GC. |
151 // Other clients must use serial iteration. |
150 // Other clients must use serial iteration. |
152 template<bool concurrent, bool is_const> class ParState; |
151 template<bool concurrent, bool is_const> class ParState; |
153 #endif // INCLUDE_ALL_GCS |
|
154 |
152 |
155 // Block cleanup functions are for the exclusive use of the GC. |
153 // Block cleanup functions are for the exclusive use of the GC. |
156 // Both stop deleting if there is an in-progress concurrent iteration. |
154 // Both stop deleting if there is an in-progress concurrent iteration. |
157 // Concurrent deletion locks both the allocate_mutex and the active_mutex. |
155 // Concurrent deletion locks both the allocate_mutex and the active_mutex. |
158 void delete_empty_blocks_safepoint(); |
156 void delete_empty_blocks_safepoint(); |
242 bool reduce_deferred_updates(); |
240 bool reduce_deferred_updates(); |
243 |
241 |
244 template<typename F, typename Storage> |
242 template<typename F, typename Storage> |
245 static bool iterate_impl(F f, Storage* storage); |
243 static bool iterate_impl(F f, Storage* storage); |
246 |
244 |
247 #if INCLUDE_ALL_GCS |
|
248 // Implementation support for parallel iteration |
245 // Implementation support for parallel iteration |
249 class BasicParState; |
246 class BasicParState; |
250 #endif // INCLUDE_ALL_GCS |
|
251 |
247 |
252 // Wrapper for OopClosure-style function, so it can be used with |
248 // Wrapper for OopClosure-style function, so it can be used with |
253 // iterate. Assume p is of type oop*. Then cl->do_oop(p) must be a |
249 // iterate. Assume p is of type oop*. Then cl->do_oop(p) must be a |
254 // valid expression whose value may be ignored. |
250 // valid expression whose value may be ignored. |
255 template<typename Closure> class OopFn; |
251 template<typename Closure> class OopFn; |