diff src/cpu/sparc/vm/jvmciCodeInstaller_sparc.cpp @ 22204:339beb637508

[SPARC] Offset constant table base pointer to leverage full 13 bit address range for constant loads
author Stefan Anzinger <stefan.anzinger@oracle.com>
date Mon, 13 Jul 2015 11:03:41 +0200
parents a0d0ecbceeb4
children 02fc27dc1da7
line wrap: on
line diff
--- a/src/cpu/sparc/vm/jvmciCodeInstaller_sparc.cpp	Mon Jul 13 10:14:34 2015 +0200
+++ b/src/cpu/sparc/vm/jvmciCodeInstaller_sparc.cpp	Mon Jul 13 11:03:41 2015 +0200
@@ -79,7 +79,8 @@
   }else {
     int const_size = align_size_up(_constants->end()-_constants->start(), CodeEntryAlignment);
     NativeMovRegMem* load = nativeMovRegMem_at(pc);
-    load->set_offset(- (const_size - data_offset));
+    // This offset must match with SPARCLoadConstantTableBaseOp.emitCode
+    load->set_offset(- (const_size - data_offset + Assembler::min_simm13()));
     TRACE_jvmci_3("relocating ld at %p (+%d) with destination at %d", pc, pc_offset, data_offset);
   }
 }