< prev index next >

src/hotspot/cpu/x86/jniFastGetField_x86_32.cpp

Print this page

        

*** 73,91 **** ExternalAddress counter(SafepointSynchronize::safepoint_counter_addr()); __ mov32 (rcx, counter); __ testb (rcx, 1); __ jcc (Assembler::notZero, slow); - if (os::is_MP()) { __ mov(rax, rcx); __ andptr(rax, 1); // rax, must end up 0 __ movptr(rdx, Address(rsp, rax, Address::times_1, 2*wordSize)); // obj, notice rax, is 0. // rdx is data dependent on rcx. - } else { - __ movptr (rdx, Address(rsp, 2*wordSize)); // obj - } __ movptr(rax, Address(rsp, 3*wordSize)); // jfieldID __ clear_jweak_tag(rdx); __ movptr(rdx, Address(rdx, 0)); // *obj --- 73,87 ----
*** 101,121 **** case T_INT: __ movl (rax, Address(rdx, rax, Address::times_1)); break; default: ShouldNotReachHere(); } Address ca1; - if (os::is_MP()) { __ lea(rdx, counter); __ xorptr(rdx, rax); __ xorptr(rdx, rax); __ cmp32(rcx, Address(rdx, 0)); // ca1 is the same as ca because // rax, ^ counter_addr ^ rax, = address // ca1 is data dependent on rax,. - } else { - __ cmp32(rcx, counter); - } __ jcc (Assembler::notEqual, slow); #ifndef _WINDOWS __ ret (0); #else --- 97,113 ----
*** 193,211 **** __ push (rsi); __ mov32 (rcx, counter); __ testb (rcx, 1); __ jcc (Assembler::notZero, slow); - if (os::is_MP()) { __ mov(rax, rcx); __ andptr(rax, 1); // rax, must end up 0 __ movptr(rdx, Address(rsp, rax, Address::times_1, 3*wordSize)); // obj, notice rax, is 0. // rdx is data dependent on rcx. - } else { - __ movptr(rdx, Address(rsp, 3*wordSize)); // obj - } __ movptr(rsi, Address(rsp, 4*wordSize)); // jfieldID __ clear_jweak_tag(rdx); __ movptr(rdx, Address(rdx, 0)); // *obj --- 185,199 ----
*** 217,239 **** #ifndef _LP64 speculative_load_pclist[count] = __ pc(); __ movl(rdx, Address(rdx, rsi, Address::times_1, 4)); #endif // _LP64 - if (os::is_MP()) { __ lea(rsi, counter); __ xorptr(rsi, rdx); __ xorptr(rsi, rax); __ xorptr(rsi, rdx); __ xorptr(rsi, rax); __ cmp32(rcx, Address(rsi, 0)); // ca1 is the same as ca because // rax, ^ rdx ^ counter_addr ^ rax, ^ rdx = address // ca1 is data dependent on both rax, and rdx. - } else { - __ cmp32(rcx, counter); - } __ jcc (Assembler::notEqual, slow); __ pop (rsi); #ifndef _WINDOWS --- 205,223 ----
*** 285,303 **** ExternalAddress counter(SafepointSynchronize::safepoint_counter_addr()); __ mov32 (rcx, counter); __ testb (rcx, 1); __ jcc (Assembler::notZero, slow); - if (os::is_MP()) { __ mov(rax, rcx); __ andptr(rax, 1); // rax, must end up 0 __ movptr(rdx, Address(rsp, rax, Address::times_1, 2*wordSize)); // obj, notice rax, is 0. // rdx is data dependent on rcx. - } else { - __ movptr(rdx, Address(rsp, 2*wordSize)); // obj - } __ movptr(rax, Address(rsp, 3*wordSize)); // jfieldID __ clear_jweak_tag(rdx); __ movptr(rdx, Address(rdx, 0)); // *obj --- 269,283 ----
*** 315,338 **** #endif // _LP64 default: ShouldNotReachHere(); } Address ca1; - if (os::is_MP()) { __ fst_s (Address(rsp, -4)); __ lea(rdx, counter); __ movl (rax, Address(rsp, -4)); // garbage hi-order bits on 64bit are harmless. __ xorptr(rdx, rax); __ xorptr(rdx, rax); __ cmp32(rcx, Address(rdx, 0)); // rax, ^ counter_addr ^ rax, = address // ca1 is data dependent on the field // access. - } else { - __ cmp32(rcx, counter); - } __ jcc (Assembler::notEqual, slow_with_pop); #ifndef _WINDOWS __ ret (0); #else --- 295,314 ----
< prev index next >