< prev index next >

src/hotspot/cpu/x86/jniFastGetField_x86_64.cpp

Print this page
rev 50081 : [mq]: primitives2.patch

*** 82,104 **** } __ clear_jweak_tag(robj); __ movptr(robj, Address(robj, 0)); // *obj - __ resolve_for_read(0, robj); __ mov (roffset, c_rarg2); __ shrptr(roffset, 2); // offset assert(count < LIST_CAPACITY, "LIST_CAPACITY too small"); speculative_load_pclist[count] = __ pc(); switch (type) { ! case T_BOOLEAN: __ movzbl (rax, Address(robj, roffset, Address::times_1)); break; ! case T_BYTE: __ movsbl (rax, Address(robj, roffset, Address::times_1)); break; ! case T_CHAR: __ movzwl (rax, Address(robj, roffset, Address::times_1)); break; ! case T_SHORT: __ movswl (rax, Address(robj, roffset, Address::times_1)); break; ! case T_INT: __ movl (rax, Address(robj, roffset, Address::times_1)); break; ! case T_LONG: __ movq (rax, Address(robj, roffset, Address::times_1)); break; default: ShouldNotReachHere(); } if (os::is_MP()) { __ lea(rcounter_addr, counter); --- 82,105 ---- } __ clear_jweak_tag(robj); __ movptr(robj, Address(robj, 0)); // *obj __ mov (roffset, c_rarg2); __ shrptr(roffset, 2); // offset assert(count < LIST_CAPACITY, "LIST_CAPACITY too small"); speculative_load_pclist[count] = __ pc(); switch (type) { ! case T_BOOLEAN: ! case T_BYTE: ! case T_CHAR: ! case T_SHORT: ! case T_INT: ! case T_LONG: ! __ access_load_at(type, IN_HEAP, rax, Address(robj, roffset, Address::times_1), noreg, noreg); ! break; default: ShouldNotReachHere(); } if (os::is_MP()) { __ lea(rcounter_addr, counter);
*** 185,205 **** } __ clear_jweak_tag(robj); __ movptr(robj, Address(robj, 0)); // *obj - __ resolve_for_read(0, robj); __ mov (roffset, c_rarg2); __ shrptr(roffset, 2); // offset assert(count < LIST_CAPACITY, "LIST_CAPACITY too small"); speculative_load_pclist[count] = __ pc(); ! switch (type) { ! case T_FLOAT: __ movflt (xmm0, Address(robj, roffset, Address::times_1)); break; ! case T_DOUBLE: __ movdbl (xmm0, Address(robj, roffset, Address::times_1)); break; ! default: ShouldNotReachHere(); ! } if (os::is_MP()) { __ lea(rcounter_addr, counter); __ movdq (rax, xmm0); // counter address is data dependent on xmm0. --- 186,202 ---- } __ clear_jweak_tag(robj); __ movptr(robj, Address(robj, 0)); // *obj __ mov (roffset, c_rarg2); __ shrptr(roffset, 2); // offset assert(count < LIST_CAPACITY, "LIST_CAPACITY too small"); speculative_load_pclist[count] = __ pc(); ! ! __ access_load_at(type, IN_HEAP, noreg, Address(robj, roffset, Address::times_1), noreg, noreg); if (os::is_MP()) { __ lea(rcounter_addr, counter); __ movdq (rax, xmm0); // counter address is data dependent on xmm0.
< prev index next >