235 ZStatTimer timer(ZSubPhasePauseRoots); 236 _universe.oops_do(cl); 237 _object_synchronizer.oops_do(cl); 238 _management.oops_do(cl); 239 _jvmti_export.oops_do(cl); 240 _system_dictionary.oops_do(cl); 241 _jni_handles.oops_do(cl); 242 _class_loader_data_graph.oops_do(cl); 243 _threads.oops_do(cl); 244 _code_cache.oops_do(cl); 245 if (visit_jvmti_weak_export) { 246 _jvmti_weak_export.oops_do(cl); 247 } 248 } 249 250 ZWeakRootsIterator::ZWeakRootsIterator() : 251 _jvmti_weak_export(this), 252 _jfr_weak(this) { 253 assert(SafepointSynchronize::is_at_safepoint(), "Should be at safepoint"); 254 ZStatTimer timer(ZSubPhasePauseWeakRootsSetup); 255 StringTable::reset_dead_counter(); 256 } 257 258 ZWeakRootsIterator::~ZWeakRootsIterator() { 259 ZStatTimer timer(ZSubPhasePauseWeakRootsTeardown); 260 StringTable::finish_dead_counter(); 261 } 262 263 void ZWeakRootsIterator::do_jvmti_weak_export(BoolObjectClosure* is_alive, OopClosure* cl) { 264 ZStatTimer timer(ZSubPhasePauseWeakRootsJVMTIWeakExport); 265 JvmtiExport::weak_oops_do(is_alive, cl); 266 } 267 268 void ZWeakRootsIterator::do_jfr_weak(BoolObjectClosure* is_alive, OopClosure* cl) { 269 #if INCLUDE_JFR 270 ZStatTimer timer(ZSubPhasePauseWeakRootsJFRWeak); 271 Jfr::weak_oops_do(is_alive, cl); 272 #endif 273 } 274 275 void ZWeakRootsIterator::weak_oops_do(BoolObjectClosure* is_alive, OopClosure* cl) { 276 ZStatTimer timer(ZSubPhasePauseWeakRoots); 277 _jvmti_weak_export.weak_oops_do(is_alive, cl); 278 _jfr_weak.weak_oops_do(is_alive, cl); 279 } 280 | 235 ZStatTimer timer(ZSubPhasePauseRoots); 236 _universe.oops_do(cl); 237 _object_synchronizer.oops_do(cl); 238 _management.oops_do(cl); 239 _jvmti_export.oops_do(cl); 240 _system_dictionary.oops_do(cl); 241 _jni_handles.oops_do(cl); 242 _class_loader_data_graph.oops_do(cl); 243 _threads.oops_do(cl); 244 _code_cache.oops_do(cl); 245 if (visit_jvmti_weak_export) { 246 _jvmti_weak_export.oops_do(cl); 247 } 248 } 249 250 ZWeakRootsIterator::ZWeakRootsIterator() : 251 _jvmti_weak_export(this), 252 _jfr_weak(this) { 253 assert(SafepointSynchronize::is_at_safepoint(), "Should be at safepoint"); 254 ZStatTimer timer(ZSubPhasePauseWeakRootsSetup); 255 } 256 257 ZWeakRootsIterator::~ZWeakRootsIterator() { 258 ZStatTimer timer(ZSubPhasePauseWeakRootsTeardown); 259 } 260 261 void ZWeakRootsIterator::do_jvmti_weak_export(BoolObjectClosure* is_alive, OopClosure* cl) { 262 ZStatTimer timer(ZSubPhasePauseWeakRootsJVMTIWeakExport); 263 JvmtiExport::weak_oops_do(is_alive, cl); 264 } 265 266 void ZWeakRootsIterator::do_jfr_weak(BoolObjectClosure* is_alive, OopClosure* cl) { 267 #if INCLUDE_JFR 268 ZStatTimer timer(ZSubPhasePauseWeakRootsJFRWeak); 269 Jfr::weak_oops_do(is_alive, cl); 270 #endif 271 } 272 273 void ZWeakRootsIterator::weak_oops_do(BoolObjectClosure* is_alive, OopClosure* cl) { 274 ZStatTimer timer(ZSubPhasePauseWeakRoots); 275 _jvmti_weak_export.weak_oops_do(is_alive, cl); 276 _jfr_weak.weak_oops_do(is_alive, cl); 277 } 278 |