diff src/cpu/sparc/vm/graalCodeInstaller_sparc.cpp @ 18176:c2270ad35f57

Better construction of data section and data patches.
author Roland Schatz <roland.schatz@oracle.com>
date Mon, 27 Oct 2014 14:07:49 +0100
parents 4e2d34d7715b
children a8cff27ca2e1
line wrap: on
line diff
--- a/src/cpu/sparc/vm/graalCodeInstaller_sparc.cpp	Mon Oct 27 13:39:12 2014 -0700
+++ b/src/cpu/sparc/vm/graalCodeInstaller_sparc.cpp	Mon Oct 27 14:07:49 2014 +0100
@@ -40,11 +40,11 @@
   }
 }
 
-void CodeInstaller::pd_patch_OopData(int pc_offset, oop data) {
+void CodeInstaller::pd_patch_OopConstant(int pc_offset, Handle& constant) {
   address pc = _instructions->start() + pc_offset;
-  Handle obj = OopData::object(data);
+  Handle obj = HotSpotObjectConstant::object(constant);
   jobject value = JNIHandles::make_local(obj());
-  if (OopData::compressed(data)) {
+  if (HotSpotObjectConstant::compressed(constant)) {
     fatal("unimplemented: narrow oop relocation");
   } else {
     NativeMovConstReg* move = nativeMovConstReg_at(pc);
@@ -58,15 +58,14 @@
   }
 }
 
-void CodeInstaller::pd_patch_DataSectionReference(int pc_offset, oop data) {
+void CodeInstaller::pd_patch_DataSectionReference(int pc_offset, int data_offset) {
   address pc = _instructions->start() + pc_offset;
   address const_start = _constants->start();
-  jint offset = DataSectionReference::offset(data);
-  address dest = _constants->start() + offset;
+  address dest = _constants->start() + data_offset;
 
   _instructions->relocate(pc + NativeMovConstReg::sethi_offset, internal_word_Relocation::spec((address) dest));
   _instructions->relocate(pc + NativeMovConstReg::add_offset, internal_word_Relocation::spec((address) dest));
-  TRACE_graal_3("relocating at %p with destination at %p (%d)", pc, dest, offset);
+  TRACE_graal_3("relocating at %p with destination at %p (%d)", pc, dest, data_offset);
 }
 
 void CodeInstaller::pd_relocate_CodeBlob(CodeBlob* cb, NativeInstruction* inst) {