< prev index next >

src/cpu/sparc/vm/jniFastGetField_sparc.cpp

Print this page

        

@@ -26,10 +26,11 @@
 #include "asm/macroAssembler.inline.hpp"
 #include "memory/resourceArea.hpp"
 #include "prims/jniFastGetField.hpp"
 #include "prims/jvm_misc.hpp"
 #include "runtime/safepoint.hpp"
+#include "runtime/jfieldIDWorkaround.hpp"
 
 // TSO ensures that loads are blocking and ordered with respect to
 // to earlier loads, so we don't need LoadLoad membars.
 
 #define __ masm->

@@ -38,11 +39,11 @@
 
 // Common register usage:
 // O0: env
 // O1: obj
 // O2: jfieldID
-// O4: offset (O2 >> 2)
+// O4: offset (O2 >> 3)
 // G4: old safepoint counter
 
 address JNI_FastGetField::generate_fast_get_int_field0(BasicType type) {
   const char *name;
   switch (type) {

@@ -65,11 +66,11 @@
   __ sethi (cnt_addrlit, O3);
   Address cnt_addr(O3, cnt_addrlit.low10());
   __ ld (cnt_addr, G4);
   __ andcc (G4, 1, G0);
   __ br (Assembler::notZero, false, Assembler::pn, label1);
-  __ delayed()->srl (O2, 2, O4);
+  __ delayed()->srl (O2, jfieldIDWorkaround::offset_shift, O4);
   __ ld_ptr (O1, 0, O5);
 
   assert(count < LIST_CAPACITY, "LIST_CAPACITY too small");
   speculative_load_pclist[count] = __ pc();
   switch (type) {

@@ -144,11 +145,11 @@
   __ sethi (cnt_addrlit, G3);
   Address cnt_addr(G3, cnt_addrlit.low10());
   __ ld (cnt_addr, G4);
   __ andcc (G4, 1, G0);
   __ br (Assembler::notZero, false, Assembler::pn, label1);
-  __ delayed()->srl (O2, 2, O4);
+  __ delayed()->srl (O2, jfieldIDWorkaround::offset_shift, O4);
   __ ld_ptr (O1, 0, O5);
   __ add (O5, O4, O5);
 
 #ifndef _LP64
   assert(count < LIST_CAPACITY-1, "LIST_CAPACITY too small");

@@ -216,11 +217,11 @@
   __ sethi (cnt_addrlit, O3);
   Address cnt_addr(O3, cnt_addrlit.low10());
   __ ld (cnt_addr, G4);
   __ andcc (G4, 1, G0);
   __ br (Assembler::notZero, false, Assembler::pn, label1);
-  __ delayed()->srl (O2, 2, O4);
+  __ delayed()->srl (O2, jfieldIDWorkaround::offset_shift, O4);
   __ ld_ptr (O1, 0, O5);
 
   assert(count < LIST_CAPACITY, "LIST_CAPACITY too small");
   speculative_load_pclist[count] = __ pc();
   switch (type) {
< prev index next >