diff --git a/src/hotspot/share/runtime/objectMonitor.hpp b/src/hotspot/share/runtime/objectMonitor.hpp index 729316811c29c..c8daeb65b50d1 100644 --- a/src/hotspot/share/runtime/objectMonitor.hpp +++ b/src/hotspot/share/runtime/objectMonitor.hpp @@ -148,9 +148,6 @@ class ObjectWaiter : public CHeapObj { #define OM_CACHE_LINE_SIZE DEFAULT_CACHE_LINE_SIZE class ObjectMonitor : public CHeapObj { - friend class LightweightSynchronizer; - friend class ObjectSynchronizer; - friend class ObjectWaiter; friend class VMStructs; JVMCI_ONLY(friend class JVMCIVMStructs;) @@ -334,6 +331,7 @@ class ObjectMonitor : public CHeapObj { void add_to_contentions(int value); intx recursions() const { return _recursions; } void set_recursions(size_t recursions); + void increment_recursions(JavaThread* current); // JVM/TI GetObjectMonitorUsage() needs this: int waiters() const; @@ -424,13 +422,12 @@ class ObjectMonitor : public CHeapObj { bool short_fixed_spin(JavaThread* current, int spin_count, bool adapt); void exit_epilog(JavaThread* current, ObjectWaiter* Wakee); + public: // Deflation support bool deflate_monitor(Thread* current); - private: void install_displaced_markword_in_object(const oop obj); // JFR support -public: static bool is_jfr_excluded(const Klass* monitor_klass); }; diff --git a/src/hotspot/share/runtime/objectMonitor.inline.hpp b/src/hotspot/share/runtime/objectMonitor.inline.hpp index 89f6deaab2108..7dabc50fca767 100644 --- a/src/hotspot/share/runtime/objectMonitor.inline.hpp +++ b/src/hotspot/share/runtime/objectMonitor.inline.hpp @@ -150,6 +150,11 @@ inline void ObjectMonitor::set_recursions(size_t recursions) { _recursions = checked_cast(recursions); } +inline void ObjectMonitor::increment_recursions(JavaThread* current) { + assert(has_owner(current), "must be the owner"); + _recursions++; +} + // Clear _owner field; current value must match old_value. inline void ObjectMonitor::release_clear_owner(JavaThread* old_owner) { int64_t old_value = owner_id_from(old_owner); diff --git a/src/hotspot/share/runtime/synchronizer.cpp b/src/hotspot/share/runtime/synchronizer.cpp index d608ffbdc02f2..503b783335175 100644 --- a/src/hotspot/share/runtime/synchronizer.cpp +++ b/src/hotspot/share/runtime/synchronizer.cpp @@ -423,7 +423,7 @@ bool ObjectSynchronizer::quick_enter_legacy(oop obj, BasicLock* lock, JavaThread // Case: TLE inimical operations such as nested/recursive synchronization if (m->has_owner(current)) { - m->_recursions++; + m->increment_recursions(current); current->inc_held_monitor_count(); return true; } @@ -440,7 +440,7 @@ bool ObjectSynchronizer::quick_enter_legacy(oop obj, BasicLock* lock, JavaThread lock->set_displaced_header(markWord::unused_mark()); if (!m->has_owner() && m->try_set_owner(current)) { - assert(m->_recursions == 0, "invariant"); + assert(m->recursions() == 0, "invariant"); current->inc_held_monitor_count(); return true; }