--- old/src/hotspot/share/runtime/vframe.hpp 2020-07-21 14:10:21.854515876 +0200 +++ new/src/hotspot/share/runtime/vframe.hpp 2020-07-21 14:10:21.738514143 +0200 @@ -35,6 +35,8 @@ #include "runtime/stackValueCollection.hpp" #include "utilities/growableArray.hpp" +class MonitorInfo; + // vframes are virtual stack frames representing source level activations. // A single frame may hold several source level activations in the case of // optimized code. The debugging stored with the optimized code enables @@ -236,46 +238,6 @@ friend class vframe; }; - -// A MonitorInfo is a ResourceObject that describes a the pair: -// 1) the owner of the monitor -// 2) the monitor lock -class MonitorInfo : public ResourceObj { - private: - Handle _owner; // the object owning the monitor - BasicLock* _lock; - Handle _owner_klass; // klass (mirror) if owner was scalar replaced - bool _eliminated; - bool _owner_is_scalar_replaced; - public: - // Constructor - MonitorInfo(oop owner, BasicLock* lock, bool eliminated, bool owner_is_scalar_replaced, TRAPS) { - if (!owner_is_scalar_replaced) { - _owner = Handle(THREAD, owner); - _owner_klass = Handle(); - } else { - assert(eliminated, "monitor should be eliminated for scalar replaced object"); - _owner = Handle(); - _owner_klass = Handle(THREAD, owner); - } - _lock = lock; - _eliminated = eliminated; - _owner_is_scalar_replaced = owner_is_scalar_replaced; - } - // Accessors - oop owner() const { - assert(!_owner_is_scalar_replaced, "should not be called for scalar replaced object"); - return _owner(); - } - oop owner_klass() const { - assert(_owner_is_scalar_replaced, "should not be called for not scalar replaced object"); - return _owner_klass(); - } - BasicLock* lock() const { return _lock; } - bool eliminated() const { return _eliminated; } - bool owner_is_scalar_replaced() const { return _owner_is_scalar_replaced; } -}; - class vframeStreamCommon : StackObj { protected: // common