Skip to content

Commit e7a1b9b

Browse files
Daniel D. Daughertyfiskdcubed-ojdk
committed
8252981: ObjectMonitor::object() cleanup changes extracted from JDK-8247281
Co-authored-by: Erik Österlund <[email protected]> Co-authored-by: Daniel Daugherty <[email protected]> Reviewed-by: rehn, coleenp, eosterlund
1 parent 040c8f5 commit e7a1b9b

File tree

8 files changed

+44
-44
lines changed

8 files changed

+44
-44
lines changed

src/hotspot/share/prims/jvmtiEnvBase.cpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -663,13 +663,13 @@ JvmtiEnvBase::get_current_contended_monitor(JavaThread *calling_thread, JavaThre
663663
mon = java_thread->current_pending_monitor();
664664
if (mon != NULL) {
665665
// The thread is trying to enter() an ObjectMonitor.
666-
obj = (oop)mon->object();
666+
obj = mon->object();
667667
assert(obj != NULL, "ObjectMonitor should have a valid object!");
668668
}
669669
// implied else: no contended ObjectMonitor
670670
} else {
671671
// thread is doing an Object.wait() call
672-
obj = (oop)mon->object();
672+
obj = mon->object();
673673
assert(obj != NULL, "Object.wait() should have an object");
674674
}
675675

@@ -741,7 +741,7 @@ JvmtiEnvBase::get_locked_objects_in_frame(JavaThread* calling_thread, JavaThread
741741
// Save object of current wait() call (if any) for later comparison.
742742
ObjectMonitor *mon = java_thread->current_waiting_monitor();
743743
if (mon != NULL) {
744-
wait_obj = (oop)mon->object();
744+
wait_obj = mon->object();
745745
}
746746
}
747747
oop pending_obj = NULL;
@@ -752,7 +752,7 @@ JvmtiEnvBase::get_locked_objects_in_frame(JavaThread* calling_thread, JavaThread
752752
// Save object of current enter() call (if any) for later comparison.
753753
ObjectMonitor *mon = java_thread->current_pending_monitor();
754754
if (mon != NULL) {
755-
pending_obj = (oop)mon->object();
755+
pending_obj = mon->object();
756756
}
757757
}
758758

@@ -1434,7 +1434,7 @@ JvmtiMonitorClosure::do_monitor(ObjectMonitor* mon) {
14341434
}
14351435
if (mon->owner() == _java_thread ) {
14361436
// Filter out on stack monitors collected during stack walk.
1437-
oop obj = (oop)mon->object();
1437+
oop obj = mon->object();
14381438
bool found = false;
14391439
for (int j = 0; j < _owned_monitors_list->length(); j++) {
14401440
jobject jobj = ((jvmtiMonitorStackDepthInfo*)_owned_monitors_list->at(j))->monitor;

src/hotspot/share/prims/jvmtiExport.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2407,7 +2407,7 @@ void JvmtiExport::post_data_dump() {
24072407
}
24082408

24092409
void JvmtiExport::post_monitor_contended_enter(JavaThread *thread, ObjectMonitor *obj_mntr) {
2410-
oop object = (oop)obj_mntr->object();
2410+
oop object = obj_mntr->object();
24112411
JvmtiThreadState *state = thread->jvmti_thread_state();
24122412
if (state == NULL) {
24132413
return;
@@ -2438,7 +2438,7 @@ void JvmtiExport::post_monitor_contended_enter(JavaThread *thread, ObjectMonitor
24382438
}
24392439

24402440
void JvmtiExport::post_monitor_contended_entered(JavaThread *thread, ObjectMonitor *obj_mntr) {
2441-
oop object = (oop)obj_mntr->object();
2441+
oop object = obj_mntr->object();
24422442
JvmtiThreadState *state = thread->jvmti_thread_state();
24432443
if (state == NULL) {
24442444
return;
@@ -2501,7 +2501,7 @@ void JvmtiExport::post_monitor_wait(JavaThread *thread, oop object,
25012501
}
25022502

25032503
void JvmtiExport::post_monitor_waited(JavaThread *thread, ObjectMonitor *obj_mntr, jboolean timed_out) {
2504-
oop object = (oop)obj_mntr->object();
2504+
oop object = obj_mntr->object();
25052505
JvmtiThreadState *state = thread->jvmti_thread_state();
25062506
if (state == NULL) {
25072507
return;

src/hotspot/share/runtime/objectMonitor.cpp

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -276,9 +276,9 @@ bool ObjectMonitor::enter(TRAPS) {
276276
if (TrySpin(Self) > 0) {
277277
assert(_owner == Self, "must be Self: owner=" INTPTR_FORMAT, p2i(_owner));
278278
assert(_recursions == 0, "must be 0: recursions=" INTX_FORMAT, _recursions);
279-
assert(((oop)object())->mark() == markWord::encode(this),
279+
assert(object()->mark() == markWord::encode(this),
280280
"object mark must match encoded this: mark=" INTPTR_FORMAT
281-
", encoded this=" INTPTR_FORMAT, ((oop)object())->mark().value(),
281+
", encoded this=" INTPTR_FORMAT, object()->mark().value(),
282282
markWord::encode(this).value());
283283
Self->_Stalled = 0;
284284
return true;
@@ -296,7 +296,7 @@ bool ObjectMonitor::enter(TRAPS) {
296296
// Async deflation is in progress and our contentions increment
297297
// above lost the race to async deflation. Undo the work and
298298
// force the caller to retry.
299-
const oop l_object = (oop)object();
299+
const oop l_object = object();
300300
if (l_object != NULL) {
301301
// Attempt to restore the header/dmw to the object's header so that
302302
// we only retry once if the deflater thread happens to be slow.
@@ -310,8 +310,8 @@ bool ObjectMonitor::enter(TRAPS) {
310310
JFR_ONLY(JfrConditionalFlushWithStacktrace<EventJavaMonitorEnter> flush(jt);)
311311
EventJavaMonitorEnter event;
312312
if (event.should_commit()) {
313-
event.set_monitorClass(((oop)this->object())->klass());
314-
event.set_address((uintptr_t)(this->object_addr()));
313+
event.set_monitorClass(object()->klass());
314+
event.set_address((uintptr_t)object_addr());
315315
}
316316

317317
{ // Change java thread status to indicate blocked on monitor enter.
@@ -374,7 +374,7 @@ bool ObjectMonitor::enter(TRAPS) {
374374
assert(_recursions == 0, "invariant");
375375
assert(_owner == Self, "invariant");
376376
assert(_succ != Self, "invariant");
377-
assert(((oop)(object()))->mark() == markWord::encode(this), "invariant");
377+
assert(object()->mark() == markWord::encode(this), "invariant");
378378

379379
// The thread -- now the owner -- is back in vm mode.
380380
// Report the glorious news via TI,DTrace and jvmstat.
@@ -446,7 +446,7 @@ void ObjectMonitor::install_displaced_markword_in_object(const oop obj) {
446446
OrderAccess::loadload();
447447
}
448448

449-
const oop l_object = (oop)object();
449+
const oop l_object = object();
450450
if (l_object == NULL) {
451451
// ObjectMonitor's object ref has already been cleared by async
452452
// deflation so we're done here.
@@ -770,7 +770,7 @@ void ObjectMonitor::ReenterI(Thread * Self, ObjectWaiter * SelfNode) {
770770
assert(SelfNode != NULL, "invariant");
771771
assert(SelfNode->_thread == Self, "invariant");
772772
assert(_waiters > 0, "invariant");
773-
assert(((oop)(object()))->mark() == markWord::encode(this), "invariant");
773+
assert(object()->mark() == markWord::encode(this), "invariant");
774774

775775
JavaThread * jt = Self->as_Java_thread();
776776
assert(jt->thread_state() != _thread_blocked, "invariant");
@@ -839,7 +839,7 @@ void ObjectMonitor::ReenterI(Thread * Self, ObjectWaiter * SelfNode) {
839839
// In addition, Self.TState is stable.
840840

841841
assert(_owner == Self, "invariant");
842-
assert(((oop)(object()))->mark() == markWord::encode(this), "invariant");
842+
assert(object()->mark() == markWord::encode(this), "invariant");
843843
UnlinkAfterAcquire(Self, SelfNode);
844844
if (_succ == Self) _succ = NULL;
845845
assert(_succ != Self, "invariant");
@@ -1301,7 +1301,7 @@ static void post_monitor_wait_event(EventJavaMonitorWait* event,
13011301
bool timedout) {
13021302
assert(event != NULL, "invariant");
13031303
assert(monitor != NULL, "invariant");
1304-
event->set_monitorClass(((oop)monitor->object())->klass());
1304+
event->set_monitorClass(monitor->object()->klass());
13051305
event->set_timeout(timeout);
13061306
event->set_address((uintptr_t)monitor->object_addr());
13071307
event->set_notifier(notifier_tid);
@@ -1519,7 +1519,7 @@ void ObjectMonitor::wait(jlong millis, bool interruptible, TRAPS) {
15191519
// Verify a few postconditions
15201520
assert(_owner == Self, "invariant");
15211521
assert(_succ != Self, "invariant");
1522-
assert(((oop)(object()))->mark() == markWord::encode(this), "invariant");
1522+
assert(object()->mark() == markWord::encode(this), "invariant");
15231523

15241524
// check if the notification happened
15251525
if (!WasNotified) {
@@ -2103,7 +2103,7 @@ void ObjectMonitor::print() const { print_on(tty); }
21032103
void ObjectMonitor::print_debug_style_on(outputStream* st) const {
21042104
st->print_cr("(ObjectMonitor*) " INTPTR_FORMAT " = {", p2i(this));
21052105
st->print_cr(" _header = " INTPTR_FORMAT, header().value());
2106-
st->print_cr(" _object = " INTPTR_FORMAT, p2i(_object));
2106+
st->print_cr(" _object = " INTPTR_FORMAT, p2i(object()));
21072107
st->print(" _allocation_state = ");
21082108
if (is_free()) {
21092109
st->print("Free");

src/hotspot/share/runtime/objectMonitor.hpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -328,9 +328,9 @@ class ObjectMonitor {
328328

329329
public:
330330

331-
void* object() const;
332-
void* object_addr();
333-
void set_object(void* obj);
331+
oop object() const;
332+
oop* object_addr();
333+
void set_object(oop obj);
334334
void release_set_allocation_state(AllocationState s);
335335
void set_allocation_state(AllocationState s);
336336
AllocationState allocation_state() const;

src/hotspot/share/runtime/objectMonitor.inline.hpp

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -92,22 +92,22 @@ inline void ObjectMonitor::clear_common() {
9292
assert(contentions() <= 0, "must not be positive: contentions=%d", contentions());
9393
assert(_waiters == 0, "must be 0: waiters=%d", _waiters);
9494
assert(_recursions == 0, "must be 0: recursions=" INTX_FORMAT, _recursions);
95-
assert(_object != NULL, "must be non-NULL");
95+
assert(object() != NULL, "must be non-NULL");
9696

9797
set_allocation_state(Free);
98-
_object = NULL;
98+
set_object(NULL);
9999
}
100100

101-
inline void* ObjectMonitor::object() const {
102-
return _object;
101+
inline oop ObjectMonitor::object() const {
102+
return (oop)_object;
103103
}
104104

105-
inline void* ObjectMonitor::object_addr() {
106-
return (void *)(&_object);
105+
inline oop* ObjectMonitor::object_addr() {
106+
return (oop*)&_object;
107107
}
108108

109-
inline void ObjectMonitor::set_object(void* obj) {
110-
_object = obj;
109+
inline void ObjectMonitor::set_object(oop obj) {
110+
_object = (void*)obj;
111111
}
112112

113113
// Return number of threads contending for this monitor.

src/hotspot/share/runtime/synchronizer.cpp

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -462,7 +462,7 @@ bool ObjectSynchronizer::quick_notify(oopDesc* obj, Thread* self, bool all) {
462462

463463
if (mark.has_monitor()) {
464464
ObjectMonitor* const mon = mark.monitor();
465-
assert(mon->object() == obj, "invariant");
465+
assert(mon->object() == oop(obj), "invariant");
466466
if (mon->owner() != self) return false; // slow-path for IMS exception
467467

468468
if (mon->first_waiter() != NULL) {
@@ -683,7 +683,7 @@ void ObjectSynchronizer::exit(oop object, BasicLock* lock, TRAPS) {
683683
// Java Monitor can be asynchronously inflated by a thread that
684684
// does not own the Java Monitor.
685685
ObjectMonitor* m = mark.monitor();
686-
assert(((oop)(m->object()))->mark() == mark, "invariant");
686+
assert(m->object()->mark() == mark, "invariant");
687687
assert(m->is_entered(THREAD), "invariant");
688688
}
689689
}
@@ -1425,7 +1425,7 @@ void ObjectSynchronizer::list_oops_do(ObjectMonitor* list, OopClosure* f) {
14251425
// so no need to lock ObjectMonitors for the list traversal.
14261426
for (ObjectMonitor* mid = list; mid != NULL; mid = unmarked_next(mid)) {
14271427
if (mid->object() != NULL) {
1428-
f->do_oop((oop*)mid->object_addr());
1428+
f->do_oop(mid->object_addr());
14291429
}
14301430
}
14311431
}
@@ -2146,7 +2146,7 @@ bool ObjectSynchronizer::deflate_monitor_using_JT(ObjectMonitor* mid,
21462146
"must be no entering threads: EntryList=" INTPTR_FORMAT,
21472147
p2i(mid->_EntryList));
21482148

2149-
const oop obj = (oop) mid->object();
2149+
const oop obj = mid->object();
21502150
if (log_is_enabled(Trace, monitorinflation)) {
21512151
ResourceMark rm;
21522152
log_trace(monitorinflation)("deflate_monitor_using_JT: "
@@ -2867,7 +2867,7 @@ void ObjectSynchronizer::chk_in_use_entry(JavaThread* jt, ObjectMonitor* n,
28672867
}
28682868
*error_cnt_p = *error_cnt_p + 1;
28692869
}
2870-
const oop obj = (oop)n->object();
2870+
const oop obj = n->object();
28712871
const markWord mark = obj->mark();
28722872
if (!mark.has_monitor()) {
28732873
if (jt != NULL) {
@@ -2977,7 +2977,7 @@ void ObjectSynchronizer::log_in_use_monitor_details(outputStream * out) {
29772977
if ((cur = get_list_head_locked(&om_list_globals._in_use_list)) != NULL) {
29782978
// Marked the global in-use list head so process the list.
29792979
while (true) {
2980-
const oop obj = (oop) cur->object();
2980+
const oop obj = cur->object();
29812981
const markWord mark = cur->header();
29822982
ResourceMark rm;
29832983
out->print(INTPTR_FORMAT " %d%d%d " INTPTR_FORMAT " %s", p2i(cur),
@@ -3007,7 +3007,7 @@ void ObjectSynchronizer::log_in_use_monitor_details(outputStream * out) {
30073007
if ((cur = get_list_head_locked(&jt->om_in_use_list)) != NULL) {
30083008
// Marked the global in-use list head so process the list.
30093009
while (true) {
3010-
const oop obj = (oop) cur->object();
3010+
const oop obj = cur->object();
30113011
const markWord mark = cur->header();
30123012
ResourceMark rm;
30133013
out->print(INTPTR_FORMAT " " INTPTR_FORMAT " %d%d%d " INTPTR_FORMAT

src/hotspot/share/services/threadService.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -229,12 +229,12 @@ Handle ThreadService::get_current_contended_monitor(JavaThread* thread) {
229229
oop obj = NULL;
230230
if (wait_obj != NULL) {
231231
// thread is doing an Object.wait() call
232-
obj = (oop) wait_obj->object();
232+
obj = wait_obj->object();
233233
} else {
234234
ObjectMonitor *enter_obj = thread->current_pending_monitor();
235235
if (enter_obj != NULL) {
236236
// thread is trying to enter() an ObjectMonitor.
237-
obj = (oop) enter_obj->object();
237+
obj = enter_obj->object();
238238
}
239239
}
240240

@@ -625,7 +625,7 @@ class InflatedMonitorsClosure: public MonitorClosure {
625625
}
626626
void do_monitor(ObjectMonitor* mid) {
627627
if (mid->owner() == _thread) {
628-
oop object = (oop) mid->object();
628+
oop object = mid->object();
629629
if (!_stack_trace->is_owned_monitor_on_stack(object)) {
630630
_stack_trace->add_jni_locked_monitor(object);
631631
}
@@ -997,7 +997,7 @@ void DeadlockCycle::print_on_with(ThreadsList * t_list, outputStream* st) const
997997

998998
if (waitingToLockMonitor != NULL) {
999999
st->print(" waiting to lock monitor " INTPTR_FORMAT, p2i(waitingToLockMonitor));
1000-
oop obj = (oop)waitingToLockMonitor->object();
1000+
oop obj = waitingToLockMonitor->object();
10011001
st->print(" (object " INTPTR_FORMAT ", a %s)", p2i(obj),
10021002
obj->klass()->external_name());
10031003

src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/runtime/ObjectMonitor.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -100,8 +100,8 @@ public int contentions() {
100100
}
101101

102102
// FIXME
103-
// void* object_addr();
104-
// void set_object(void* obj);
103+
// oop* object_addr();
104+
// void set_object(oop obj);
105105

106106
// The following four either aren't expressed as typed fields in
107107
// vmStructs.cpp because they aren't strongly typed in the VM, or

0 commit comments

Comments
 (0)