94 void do_code_cache(ZRootsIteratorClosure* cl); 95 96 ZSerialOopsDo<ZRootsIterator, &ZRootsIterator::do_universe> _universe; 97 ZSerialOopsDo<ZRootsIterator, &ZRootsIterator::do_object_synchronizer> _object_synchronizer; 98 ZSerialOopsDo<ZRootsIterator, &ZRootsIterator::do_management> _management; 99 ZSerialOopsDo<ZRootsIterator, &ZRootsIterator::do_jvmti_export> _jvmti_export; 100 ZSerialOopsDo<ZRootsIterator, &ZRootsIterator::do_jvmti_weak_export> _jvmti_weak_export; 101 ZSerialOopsDo<ZRootsIterator, &ZRootsIterator::do_system_dictionary> _system_dictionary; 102 ZParallelOopsDo<ZRootsIterator, &ZRootsIterator::do_threads> _threads; 103 ZParallelOopsDo<ZRootsIterator, &ZRootsIterator::do_code_cache> _code_cache; 104 105 public: 106 ZRootsIterator(); 107 ~ZRootsIterator(); 108 109 void oops_do(ZRootsIteratorClosure* cl, bool visit_jvmti_weak_export = false); 110 }; 111 112 class ZConcurrentRootsIterator { 113 private: 114 ZOopStorageIterator _jni_handles_iter; 115 ZOopStorageIterator _vm_handles_iter; 116 int _cld_claim; 117 118 void do_jni_handles(ZRootsIteratorClosure* cl); 119 void do_vm_handles(ZRootsIteratorClosure* cl); 120 void do_class_loader_data_graph(ZRootsIteratorClosure* cl); 121 122 ZParallelOopsDo<ZConcurrentRootsIterator, &ZConcurrentRootsIterator::do_jni_handles> _jni_handles; 123 ZParallelOopsDo<ZConcurrentRootsIterator, &ZConcurrentRootsIterator::do_vm_handles> _vm_handles; 124 ZParallelOopsDo<ZConcurrentRootsIterator, &ZConcurrentRootsIterator::do_class_loader_data_graph> _class_loader_data_graph; 125 126 public: 127 ZConcurrentRootsIterator(int cld_claim); 128 ~ZConcurrentRootsIterator(); 129 130 void oops_do(ZRootsIteratorClosure* cl); 131 }; 132 133 class ZWeakRootsIterator { 134 private: 135 void do_jvmti_weak_export(BoolObjectClosure* is_alive, ZRootsIteratorClosure* cl); 136 void do_jfr_weak(BoolObjectClosure* is_alive, ZRootsIteratorClosure* cl); 137 138 ZSerialWeakOopsDo<ZWeakRootsIterator, &ZWeakRootsIterator::do_jvmti_weak_export> _jvmti_weak_export; 139 ZSerialWeakOopsDo<ZWeakRootsIterator, &ZWeakRootsIterator::do_jfr_weak> _jfr_weak; 140 141 public: 142 ZWeakRootsIterator(); 143 ~ZWeakRootsIterator(); 144 145 void weak_oops_do(BoolObjectClosure* is_alive, ZRootsIteratorClosure* cl); 146 void oops_do(ZRootsIteratorClosure* cl); 147 }; 148 149 class ZConcurrentWeakRootsIterator { 150 private: 151 ZOopStorageIterator _vm_weak_handles_iter; 152 ZOopStorageIterator _jni_weak_handles_iter; 153 ZOopStorageIterator _string_table_iter; 154 ZOopStorageIterator _resolved_method_table_iter; 155 156 void do_vm_weak_handles(ZRootsIteratorClosure* cl); 157 void do_jni_weak_handles(ZRootsIteratorClosure* cl); 158 void do_string_table(ZRootsIteratorClosure* cl); 159 void do_resolved_method_table(ZRootsIteratorClosure* cl); | 94 void do_code_cache(ZRootsIteratorClosure* cl); 95 96 ZSerialOopsDo<ZRootsIterator, &ZRootsIterator::do_universe> _universe; 97 ZSerialOopsDo<ZRootsIterator, &ZRootsIterator::do_object_synchronizer> _object_synchronizer; 98 ZSerialOopsDo<ZRootsIterator, &ZRootsIterator::do_management> _management; 99 ZSerialOopsDo<ZRootsIterator, &ZRootsIterator::do_jvmti_export> _jvmti_export; 100 ZSerialOopsDo<ZRootsIterator, &ZRootsIterator::do_jvmti_weak_export> _jvmti_weak_export; 101 ZSerialOopsDo<ZRootsIterator, &ZRootsIterator::do_system_dictionary> _system_dictionary; 102 ZParallelOopsDo<ZRootsIterator, &ZRootsIterator::do_threads> _threads; 103 ZParallelOopsDo<ZRootsIterator, &ZRootsIterator::do_code_cache> _code_cache; 104 105 public: 106 ZRootsIterator(); 107 ~ZRootsIterator(); 108 109 void oops_do(ZRootsIteratorClosure* cl, bool visit_jvmti_weak_export = false); 110 }; 111 112 class ZConcurrentRootsIterator { 113 private: 114 ZOopStorageIterator _jni_handles_iter; 115 ZOopStorageIterator _vm_handles_iter; 116 const int _cld_claim; 117 118 void do_jni_handles(ZRootsIteratorClosure* cl); 119 void do_vm_handles(ZRootsIteratorClosure* cl); 120 void do_class_loader_data_graph(ZRootsIteratorClosure* cl); 121 122 ZParallelOopsDo<ZConcurrentRootsIterator, &ZConcurrentRootsIterator::do_jni_handles> _jni_handles; 123 ZParallelOopsDo<ZConcurrentRootsIterator, &ZConcurrentRootsIterator::do_vm_handles> _vm_handles; 124 ZParallelOopsDo<ZConcurrentRootsIterator, &ZConcurrentRootsIterator::do_class_loader_data_graph> _class_loader_data_graph; 125 126 public: 127 ZConcurrentRootsIterator(int cld_claim); 128 ~ZConcurrentRootsIterator(); 129 130 void oops_do(ZRootsIteratorClosure* cl); 131 }; 132 133 class ZConcurrentRootsIteratorClaimStrong : public ZConcurrentRootsIterator { 134 public: 135 ZConcurrentRootsIteratorClaimStrong() : 136 ZConcurrentRootsIterator(ClassLoaderData::_claim_strong) {} 137 }; 138 139 class ZConcurrentRootsIteratorClaimOther : public ZConcurrentRootsIterator { 140 public: 141 ZConcurrentRootsIteratorClaimOther() : 142 ZConcurrentRootsIterator(ClassLoaderData::_claim_other) {} 143 }; 144 145 class ZConcurrentRootsIteratorClaimNone : public ZConcurrentRootsIterator { 146 public: 147 ZConcurrentRootsIteratorClaimNone() : 148 ZConcurrentRootsIterator(ClassLoaderData::_claim_none) {} 149 }; 150 151 class ZWeakRootsIterator { 152 private: 153 void do_jvmti_weak_export(BoolObjectClosure* is_alive, ZRootsIteratorClosure* cl); 154 void do_jfr_weak(BoolObjectClosure* is_alive, ZRootsIteratorClosure* cl); 155 156 ZSerialWeakOopsDo<ZWeakRootsIterator, &ZWeakRootsIterator::do_jvmti_weak_export> _jvmti_weak_export; 157 ZSerialWeakOopsDo<ZWeakRootsIterator, &ZWeakRootsIterator::do_jfr_weak> _jfr_weak; 158 159 public: 160 ZWeakRootsIterator(); 161 ~ZWeakRootsIterator(); 162 163 void weak_oops_do(BoolObjectClosure* is_alive, ZRootsIteratorClosure* cl); 164 void oops_do(ZRootsIteratorClosure* cl); 165 }; 166 167 class ZConcurrentWeakRootsIterator { 168 private: 169 ZOopStorageIterator _vm_weak_handles_iter; 170 ZOopStorageIterator _jni_weak_handles_iter; 171 ZOopStorageIterator _string_table_iter; 172 ZOopStorageIterator _resolved_method_table_iter; 173 174 void do_vm_weak_handles(ZRootsIteratorClosure* cl); 175 void do_jni_weak_handles(ZRootsIteratorClosure* cl); 176 void do_string_table(ZRootsIteratorClosure* cl); 177 void do_resolved_method_table(ZRootsIteratorClosure* cl); |