< prev index next > src/hotspot/cpu/s390/macroAssembler_s390.cpp
Print this page
Register monitor_tagged = displacedHeader; // Tagged with markWord::monitor_value.
// The object's monitor m is unlocked iff m->owner is null,
// otherwise m->owner may contain a thread or a stack address.
// Try to CAS m->owner from null to current thread.
- // If m->owner is null, then csg succeeds and sets m->owner=THREAD and CR=EQ.
+ // If m->owner is null, then csg succeeds and sets m->owner=THREAD_ID and CR=EQ.
// Otherwise, register zero is filled with the current owner.
z_lghi(zero, 0);
+ z_csg(zero, Z_R1_scratch, OM_OFFSET_NO_MONITOR_VALUE_TAG(owner), monitor_tagged);
z_csg(zero, Z_thread, OM_OFFSET_NO_MONITOR_VALUE_TAG(owner), monitor_tagged);
if (LockingMode != LM_LIGHTWEIGHT) {
// Store a non-null value into the box.
z_stg(box, BasicLock::displaced_header_offset_in_bytes(), box);
}
< prev index next >