mirror of
https://github.com/openjdk/jdk.git
synced 2026-05-23 03:48:13 +00:00
8354448: [REDO] Remove friends for ObjectMonitor
Reviewed-by: kbarrett, shade, dholmes
This commit is contained in:
parent
5fc18f5b8a
commit
273a9a6155
@ -148,9 +148,6 @@ class ObjectWaiter : public CHeapObj<mtThread> {
|
||||
#define OM_CACHE_LINE_SIZE DEFAULT_CACHE_LINE_SIZE
|
||||
|
||||
class ObjectMonitor : public CHeapObj<mtObjectMonitor> {
|
||||
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<mtObjectMonitor> {
|
||||
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<mtObjectMonitor> {
|
||||
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);
|
||||
};
|
||||
|
||||
|
||||
@ -150,6 +150,11 @@ inline void ObjectMonitor::set_recursions(size_t recursions) {
|
||||
_recursions = checked_cast<intx>(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);
|
||||
|
||||
@ -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;
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user