< prev index next >

src/hotspot/share/oops/klass.cpp

Access_GetLoadedClasses

*** 33,42 **** --- 33,43 ---- #include "memory/metadataFactory.hpp" #include "memory/metaspaceClosure.hpp" #include "memory/metaspaceShared.hpp" #include "memory/oopFactory.hpp" #include "memory/resourceArea.hpp" + #include "oops/access.inline.hpp" #include "oops/instanceKlass.hpp" #include "oops/klass.inline.hpp" #include "oops/oop.inline.hpp" #include "runtime/atomic.hpp" #include "runtime/orderAccess.inline.hpp" ***************
*** 52,61 **** --- 53,74 ---- oop Klass::java_mirror() const { return _java_mirror.resolve(); } + oop Klass::java_mirror_phantom() { + // Loading the klass_holder as a phantom oop ref keeps the class alive. + // After the holder has been kept alive, it is safe to return the mirror. + (void)klass_holder_phantom(); + return java_mirror(); + } + + oop Klass::klass_holder_phantom() { + oop* addr = &class_loader_data()->_class_loader; + return RootAccess<IN_CONCURRENT_ROOT | ON_PHANTOM_OOP_REF>::oop_load(addr); + } + bool Klass::is_cloneable() const { return _access_flags.is_cloneable_fast() || is_subtype_of(SystemDictionary::Cloneable_klass()); }
< prev index next >