< prev index next >

src/cpu/aarch64/vm/sharedRuntime_aarch64.cpp

Print this page
rev 12121 : Use oopDesc::mark_offset_in_bytes() instead of just 0 to access object mark word in assembly.

*** 1822,1839 **** if (UseBiasedLocking) { __ biased_locking_enter(lock_reg, obj_reg, swap_reg, tmp, false, lock_done, &slow_path_lock); } // Load (object->mark() | 1) into swap_reg %r0 ! __ ldr(rscratch1, Address(obj_reg, 0)); __ orr(swap_reg, rscratch1, 1); // Save (object->mark() | 1) into BasicLock's displaced header __ str(swap_reg, Address(lock_reg, mark_word_offset)); // src -> dest iff dest == r0 else r0 <- dest { Label here; __ cmpxchgptr(r0, lock_reg, obj_reg, rscratch1, lock_done, /*fallthrough*/NULL); } // Hmm should this move to the slow path code area??? --- 1822,1840 ---- if (UseBiasedLocking) { __ biased_locking_enter(lock_reg, obj_reg, swap_reg, tmp, false, lock_done, &slow_path_lock); } // Load (object->mark() | 1) into swap_reg %r0 ! __ ldr(rscratch1, Address(obj_reg, oopDesc::mark_offset_in_bytes())); __ orr(swap_reg, rscratch1, 1); // Save (object->mark() | 1) into BasicLock's displaced header __ str(swap_reg, Address(lock_reg, mark_word_offset)); // src -> dest iff dest == r0 else r0 <- dest { Label here; + assert(oopDesc::mark_offset_in_bytes() == 0, "assumption"); __ cmpxchgptr(r0, lock_reg, obj_reg, rscratch1, lock_done, /*fallthrough*/NULL); } // Hmm should this move to the slow path code area???
*** 2007,2016 **** --- 2008,2018 ---- // get old displaced header __ ldr(old_hdr, Address(r0, 0)); // Atomic swap old header if oop still contains the stack lock Label succeed; + assert(oopDesc::mark_offset_in_bytes() == 0, "assumption"); __ cmpxchgptr(r0, old_hdr, obj_reg, rscratch1, succeed, &slow_path_unlock); __ bind(succeed); // slow path re-enters here __ bind(unlock_done);
< prev index next >