113 ZParallelOopsDo<ZRootsIterator, &ZRootsIterator::do_code_cache> _code_cache; 114 ZParallelOopsDo<ZRootsIterator, &ZRootsIterator::do_string_table> _string_table; 115 116 public: 117 ZRootsIterator(); 118 ~ZRootsIterator(); 119 120 void oops_do(OopClosure* cl, bool visit_jvmti_weak_export = false); 121 }; 122 123 class ZWeakRootsIterator { 124 private: 125 ZOopStorageIterator _vm_weak_handles_iter; 126 ZOopStorageIterator _jni_weak_handles_iter; 127 ZOopStorageIterator _string_table_iter; 128 129 void do_vm_weak_handles(BoolObjectClosure* is_alive, OopClosure* cl); 130 void do_jni_weak_handles(BoolObjectClosure* is_alive, OopClosure* cl); 131 void do_jvmti_weak_export(BoolObjectClosure* is_alive, OopClosure* cl); 132 void do_jfr_weak(BoolObjectClosure* is_alive, OopClosure* cl); 133 void do_symbol_table(BoolObjectClosure* is_alive, OopClosure* cl); 134 void do_string_table(BoolObjectClosure* is_alive, OopClosure* cl); 135 136 ZSerialWeakOopsDo<ZWeakRootsIterator, &ZWeakRootsIterator::do_jvmti_weak_export> _jvmti_weak_export; 137 ZSerialWeakOopsDo<ZWeakRootsIterator, &ZWeakRootsIterator::do_jfr_weak> _jfr_weak; 138 ZParallelWeakOopsDo<ZWeakRootsIterator, &ZWeakRootsIterator::do_vm_weak_handles> _vm_weak_handles; 139 ZParallelWeakOopsDo<ZWeakRootsIterator, &ZWeakRootsIterator::do_jni_weak_handles> _jni_weak_handles; 140 ZParallelWeakOopsDo<ZWeakRootsIterator, &ZWeakRootsIterator::do_symbol_table> _symbol_table; 141 ZParallelWeakOopsDo<ZWeakRootsIterator, &ZWeakRootsIterator::do_string_table> _string_table; 142 143 public: 144 ZWeakRootsIterator(); 145 ~ZWeakRootsIterator(); 146 147 void weak_oops_do(BoolObjectClosure* is_alive, OopClosure* cl); 148 void oops_do(OopClosure* cl); 149 }; 150 151 class ZConcurrentWeakRootsIterator { 152 private: 153 ZConcurrentOopStorageIterator _vm_weak_handles_iter; 154 ZConcurrentOopStorageIterator _jni_weak_handles_iter; 155 ZConcurrentOopStorageIterator _string_table_iter; 156 157 void do_vm_weak_handles(OopClosure* cl); 158 void do_jni_weak_handles(OopClosure* cl); 159 void do_string_table(OopClosure* cl); 160 | 113 ZParallelOopsDo<ZRootsIterator, &ZRootsIterator::do_code_cache> _code_cache; 114 ZParallelOopsDo<ZRootsIterator, &ZRootsIterator::do_string_table> _string_table; 115 116 public: 117 ZRootsIterator(); 118 ~ZRootsIterator(); 119 120 void oops_do(OopClosure* cl, bool visit_jvmti_weak_export = false); 121 }; 122 123 class ZWeakRootsIterator { 124 private: 125 ZOopStorageIterator _vm_weak_handles_iter; 126 ZOopStorageIterator _jni_weak_handles_iter; 127 ZOopStorageIterator _string_table_iter; 128 129 void do_vm_weak_handles(BoolObjectClosure* is_alive, OopClosure* cl); 130 void do_jni_weak_handles(BoolObjectClosure* is_alive, OopClosure* cl); 131 void do_jvmti_weak_export(BoolObjectClosure* is_alive, OopClosure* cl); 132 void do_jfr_weak(BoolObjectClosure* is_alive, OopClosure* cl); 133 void do_string_table(BoolObjectClosure* is_alive, OopClosure* cl); 134 135 ZSerialWeakOopsDo<ZWeakRootsIterator, &ZWeakRootsIterator::do_jvmti_weak_export> _jvmti_weak_export; 136 ZSerialWeakOopsDo<ZWeakRootsIterator, &ZWeakRootsIterator::do_jfr_weak> _jfr_weak; 137 ZParallelWeakOopsDo<ZWeakRootsIterator, &ZWeakRootsIterator::do_vm_weak_handles> _vm_weak_handles; 138 ZParallelWeakOopsDo<ZWeakRootsIterator, &ZWeakRootsIterator::do_jni_weak_handles> _jni_weak_handles; 139 ZParallelWeakOopsDo<ZWeakRootsIterator, &ZWeakRootsIterator::do_string_table> _string_table; 140 141 public: 142 ZWeakRootsIterator(); 143 ~ZWeakRootsIterator(); 144 145 void weak_oops_do(BoolObjectClosure* is_alive, OopClosure* cl); 146 void oops_do(OopClosure* cl); 147 }; 148 149 class ZConcurrentWeakRootsIterator { 150 private: 151 ZConcurrentOopStorageIterator _vm_weak_handles_iter; 152 ZConcurrentOopStorageIterator _jni_weak_handles_iter; 153 ZConcurrentOopStorageIterator _string_table_iter; 154 155 void do_vm_weak_handles(OopClosure* cl); 156 void do_jni_weak_handles(OopClosure* cl); 157 void do_string_table(OopClosure* cl); 158 |