< prev index next >

src/hotspot/cpu/s390/interp_masm_s390.cpp

Print this page

        

*** 974,984 **** // template code: // // markWord displaced_header = obj->mark().set_unlocked(); // monitor->lock()->set_displaced_header(displaced_header); ! // if (Atomic::cmpxchg(/*ex=*/monitor, /*addr*/obj->mark_addr(), /*cmp*/displaced_header) == displaced_header) { // // We stored the monitor address into the object's mark word. // } else if (THREAD->is_lock_owned((address)displaced_header)) // // Simple recursive case. // monitor->lock()->set_displaced_header(NULL); // } else { --- 974,984 ---- // template code: // // markWord displaced_header = obj->mark().set_unlocked(); // monitor->lock()->set_displaced_header(displaced_header); ! // if (Atomic::cmpxchg(/*addr*/obj->mark_addr(), /*cmp*/displaced_header, /*ex=*/monitor) == displaced_header) { // // We stored the monitor address into the object's mark word. // } else if (THREAD->is_lock_owned((address)displaced_header)) // // Simple recursive case. // monitor->lock()->set_displaced_header(NULL); // } else {
*** 1009,1019 **** // Initialize the box (Must happen before we update the object mark!). z_stg(displaced_header, BasicObjectLock::lock_offset_in_bytes() + BasicLock::displaced_header_offset_in_bytes(), monitor); ! // if (Atomic::cmpxchg(/*ex=*/monitor, /*addr*/obj->mark_addr(), /*cmp*/displaced_header) == displaced_header) { // Store stack address of the BasicObjectLock (this is monitor) into object. add2reg(object_mark_addr, oopDesc::mark_offset_in_bytes(), object); z_csg(displaced_header, monitor, 0, object_mark_addr); --- 1009,1019 ---- // Initialize the box (Must happen before we update the object mark!). z_stg(displaced_header, BasicObjectLock::lock_offset_in_bytes() + BasicLock::displaced_header_offset_in_bytes(), monitor); ! // if (Atomic::cmpxchg(/*addr*/obj->mark_addr(), /*cmp*/displaced_header, /*ex=*/monitor) == displaced_header) { // Store stack address of the BasicObjectLock (this is monitor) into object. add2reg(object_mark_addr, oopDesc::mark_offset_in_bytes(), object); z_csg(displaced_header, monitor, 0, object_mark_addr);
*** 1080,1090 **** // template code: // // if ((displaced_header = monitor->displaced_header()) == NULL) { // // Recursive unlock. Mark the monitor unlocked by setting the object field to NULL. // monitor->set_obj(NULL); ! // } else if (Atomic::cmpxchg(displaced_header, obj->mark_addr(), monitor) == monitor) { // // We swapped the unlocked mark in displaced_header into the object's mark word. // monitor->set_obj(NULL); // } else { // // Slow path. // InterpreterRuntime::monitorexit(THREAD, monitor); --- 1080,1090 ---- // template code: // // if ((displaced_header = monitor->displaced_header()) == NULL) { // // Recursive unlock. Mark the monitor unlocked by setting the object field to NULL. // monitor->set_obj(NULL); ! // } else if (Atomic::cmpxchg(obj->mark_addr(), monitor, displaced_header) == monitor) { // // We swapped the unlocked mark in displaced_header into the object's mark word. // monitor->set_obj(NULL); // } else { // // Slow path. // InterpreterRuntime::monitorexit(THREAD, monitor);
*** 1121,1131 **** MacroAssembler::load_and_test_long(displaced_header, Address(monitor, BasicObjectLock::lock_offset_in_bytes() + BasicLock::displaced_header_offset_in_bytes())); z_bre(done); // displaced_header == 0 -> goto done ! // } else if (Atomic::cmpxchg(displaced_header, obj->mark_addr(), monitor) == monitor) { // // We swapped the unlocked mark in displaced_header into the object's mark word. // monitor->set_obj(NULL); // If we still have a lightweight lock, unlock the object and be done. --- 1121,1131 ---- MacroAssembler::load_and_test_long(displaced_header, Address(monitor, BasicObjectLock::lock_offset_in_bytes() + BasicLock::displaced_header_offset_in_bytes())); z_bre(done); // displaced_header == 0 -> goto done ! // } else if (Atomic::cmpxchg(obj->mark_addr(), monitor, displaced_header) == monitor) { // // We swapped the unlocked mark in displaced_header into the object's mark word. // monitor->set_obj(NULL); // If we still have a lightweight lock, unlock the object and be done.
< prev index next >