< prev index next >
src/cpu/x86/vm/jniFastGetField_x86_64.cpp
Print this page
@@ -25,10 +25,11 @@
#include "precompiled.hpp"
#include "asm/macroAssembler.hpp"
#include "memory/resourceArea.hpp"
#include "prims/jniFastGetField.hpp"
#include "prims/jvm_misc.hpp"
+#include "runtime/jfieldIDWorkaround.hpp"
#include "runtime/safepoint.hpp"
#define __ masm->
#define BUFFER_SIZE 30*wordSize
@@ -80,11 +81,11 @@
// robj ^ rcounter ^ rcounter == robj
// robj is data dependent on rcounter.
}
__ movptr(robj, Address(robj, 0)); // *obj
__ mov (roffset, c_rarg2);
- __ shrptr(roffset, 2); // offset
+ __ shrptr(roffset, jfieldIDWorkaround::offset_shift); // 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;
@@ -178,11 +179,11 @@
// robj ^ rcounter ^ rcounter == robj
// robj is data dependent on rcounter.
}
__ movptr(robj, Address(robj, 0)); // *obj
__ mov (roffset, c_rarg2);
- __ shrptr(roffset, 2); // offset
+ __ shrptr(roffset, jfieldIDWorkaround::offset_shift); // 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;
< prev index next >