< prev index next > src/hotspot/cpu/x86/stubGenerator_x86_32.cpp
Print this page
__ jmp(handler_addr);
return start;
}
-
- //----------------------------------------------------------------------------------------------------
- // Implementation of int32_t atomic_xchg(int32_t exchange_value, volatile int32_t* dest)
- // used by Atomic::xchg(volatile int32_t* dest, int32_t exchange_value)
- //
- // xchg exists as far back as 8086, lock needed for MP only
- // Stack layout immediately after call:
- //
- // 0 [ret addr ] <--- rsp
- // 1 [ ex ]
- // 2 [ dest ]
- //
- // Result: *dest <- ex, return (old *dest)
- //
- // Note: win32 does not currently use this code
-
- address generate_atomic_xchg() {
- StubCodeMark mark(this, "StubRoutines", "atomic_xchg");
- address start = __ pc();
-
- __ push(rdx);
- Address exchange(rsp, 2 * wordSize);
- Address dest_addr(rsp, 3 * wordSize);
- __ movl(rax, exchange);
- __ movptr(rdx, dest_addr);
- __ xchgl(rax, Address(rdx, 0));
- __ pop(rdx);
- __ ret(0);
-
- return start;
- }
-
//----------------------------------------------------------------------------------------------------
// Support for void verify_mxcsr()
//
// This routine is used with -Xcheck:jni to verify that native
// JNI code does not return to Java code without restoring the
StubRoutines::_call_stub_entry =
generate_call_stub(StubRoutines::_call_stub_return_address);
// is referenced by megamorphic call
StubRoutines::_catch_exception_entry = generate_catch_exception();
- // These are currently used by Solaris/Intel
- StubRoutines::_atomic_xchg_entry = generate_atomic_xchg();
-
// platform dependent
create_control_words();
StubRoutines::x86::_verify_mxcsr_entry = generate_verify_mxcsr();
StubRoutines::x86::_verify_fpu_cntrl_wrd_entry = generate_verify_fpu_cntrl_wrd();
< prev index next >