diff --git a/src/hotspot/share/oops/klass.hpp b/src/hotspot/share/oops/klass.hpp index d8fe5de..956a6c4 100644 --- a/src/hotspot/share/oops/klass.hpp +++ b/src/hotspot/share/oops/klass.hpp @@ -227,6 +227,11 @@ protected: // java mirror oop java_mirror() const; + // Load the java_mirror as a phantom. This is useful when a weak Klass + // pointer has been "peeked" and then must be kept alive before it may + // be used safely. The Klass will be kept alive and not be unloaded due + // to concurrent marking. + virtual oop java_mirror_phantom(); void set_java_mirror(Handle m); // Temporary mirror switch used by RedefineClasses @@ -454,6 +459,11 @@ protected: oop class_loader() const; virtual oop klass_holder() const { return class_loader(); } + // Load the klass_holder as a phantom. This is useful when a weak Klass + // pointer has been "peeked" and then must be kept alive before it may + // be used safely. The Klass will be kept alive and not be unloaded due + // to concurrent marking. + virtual oop klass_holder_phantom(); protected: virtual Klass* array_klass_impl(bool or_null, int rank, TRAPS);