< prev index next > src/hotspot/cpu/riscv/sharedRuntime_riscv.cpp
Print this page
// Save the test result, for recursive case, the result is zero
__ sd(swap_reg, Address(lock_reg, mark_word_offset));
__ bnez(swap_reg, slow_path_lock);
} else {
- assert(LockingMode == LM_LIGHTWEIGHT, "");
- __ ld(swap_reg, Address(obj_reg, oopDesc::mark_offset_in_bytes()));
+ assert(LockingMode == LM_LIGHTWEIGHT, "must be");
__ lightweight_lock(obj_reg, swap_reg, tmp, lock_tmp, slow_path_lock);
}
__ bind(count);
__ increment(Address(xthread, JavaThread::held_monitor_count_offset()));
__ cmpxchg_obj_header(x10, old_hdr, obj_reg, t0, count, &slow_path_unlock);
__ bind(count);
__ decrement(Address(xthread, JavaThread::held_monitor_count_offset()));
} else {
assert(LockingMode == LM_LIGHTWEIGHT, "");
- __ ld(old_hdr, Address(obj_reg, oopDesc::mark_offset_in_bytes()));
- __ test_bit(t0, old_hdr, exact_log2(markWord::monitor_value));
- __ bnez(t0, slow_path_unlock);
__ lightweight_unlock(obj_reg, old_hdr, swap_reg, lock_tmp, slow_path_unlock);
__ decrement(Address(xthread, JavaThread::held_monitor_count_offset()));
}
// slow path re-enters here
< prev index next >