< prev index next > src/hotspot/share/jfr/leakprofiler/checkpoint/rootResolver.cpp
Print this page
bool _complete;
bool do_cldg_roots();
bool do_object_synchronizer_roots();
bool do_universe_roots();
- bool do_jni_handle_roots();
+ bool do_oop_storage_roots();
bool do_jvmti_roots();
- bool do_vm_global_roots();
bool do_management_roots();
bool do_string_table_roots();
bool do_aot_loader_roots();
bool do_roots();
ReferenceLocateClosure rlc(_callback, OldObjectRoot::_universe, OldObjectRoot::_type_undetermined, NULL);
Universe::oops_do(&rlc);
return rlc.complete();
}
- bool ReferenceToRootClosure::do_jni_handle_roots() {
- assert(!complete(), "invariant");
- ReferenceLocateClosure rlc(_callback, OldObjectRoot::_global_jni_handles, OldObjectRoot::_global_jni_handle, NULL);
- JNIHandles::oops_do(&rlc);
- return rlc.complete();
+ bool ReferenceToRootClosure::do_oop_storage_roots() {
+ int i = 0;
+ for (OopStorageSet::Iterator it = OopStorageSet::strong_iterator(); !it.is_end(); ++it, ++i) {
+ assert(!complete(), "invariant");
+ OopStorage* oop_storage = *it;
+ OldObjectRoot::Type type = oop_storage == OopStorageSet::jni_global() ?
+ OldObjectRoot::_global_jni_handle :
+ OldObjectRoot::_global_oop_handle;
+ OldObjectRoot::System system = OldObjectRoot::System(OldObjectRoot::_strong_oop_storage_set_first + i);
+ ReferenceLocateClosure rlc(_callback, system, type, NULL);
+ oop_storage->oops_do(&rlc);
+ if (rlc.complete()) {
+ return true;
+ }
+ }
+ return false;
}
bool ReferenceToRootClosure::do_jvmti_roots() {
assert(!complete(), "invariant");
ReferenceLocateClosure rlc(_callback, OldObjectRoot::_jvmti, OldObjectRoot::_global_jni_handle, NULL);
JvmtiExport::oops_do(&rlc);
return rlc.complete();
}
- bool ReferenceToRootClosure::do_vm_global_roots() {
- assert(!complete(), "invariant");
- ReferenceLocateClosure rlc(_callback, OldObjectRoot::_vm_global, OldObjectRoot::_type_undetermined, NULL);
- OopStorageSet::vm_global()->oops_do(&rlc);
- return rlc.complete();
- }
-
bool ReferenceToRootClosure::do_management_roots() {
assert(!complete(), "invariant");
ReferenceLocateClosure rlc(_callback, OldObjectRoot::_management, OldObjectRoot::_type_undetermined, NULL);
Management::oops_do(&rlc);
return rlc.complete();
if (do_universe_roots()) {
_complete = true;
return true;
}
- if (do_jni_handle_roots()) {
+ if (do_oop_storage_roots()) {
_complete = true;
return true;
}
if (do_jvmti_roots()) {
_complete = true;
return true;
}
- if (do_vm_global_roots()) {
- _complete = true;
- return true;
- }
-
if (do_management_roots()) {
_complete = true;
return true;
}
< prev index next >