< prev index next > src/hotspot/cpu/x86/sharedRuntime_x86_32.cpp
Print this page
#include "runtime/signature.hpp"
#include "runtime/stubRoutines.hpp"
#include "runtime/vframeArray.hpp"
#include "runtime/vm_version.hpp"
#include "utilities/align.hpp"
+ #include "utilities/globalDefinitions.hpp"
#include "vmreg_x86.inline.hpp"
#ifdef COMPILER1
#include "c1/c1_Runtime1.hpp"
#endif
#ifdef COMPILER2
// Save the test result, for recursive case, the result is zero
__ movptr(Address(lock_reg, mark_word_offset), swap_reg);
__ jcc(Assembler::notEqual, slow_path_lock);
} else {
assert(LockingMode == LM_LIGHTWEIGHT, "must be");
- __ lightweight_lock(obj_reg, swap_reg, thread, lock_reg, slow_path_lock);
+ __ lightweight_lock(lock_reg, obj_reg, swap_reg, thread, lock_reg, slow_path_lock);
}
__ bind(count_mon);
__ inc_held_monitor_count();
// Slow path will re-enter here
// BEGIN Slow path lock
__ bind(slow_path_lock);
+ if (LockingMode == LM_LIGHTWEIGHT) {
+ // Reload the lock addr. Clobbered by lightweight_lock.
+ __ lea(lock_reg, Address(rbp, lock_slot_rbp_offset));
+ }
+
// has last_Java_frame setup. No exceptions so do vanilla call not call_VM
// args are (oop obj, BasicLock* lock, JavaThread* thread)
__ push(thread);
__ push(lock_reg);
__ push(obj_reg);
< prev index next >