changeset 16309:9a40006b53c1

Make proper code for c const strings required for fixup in hotspot
author Stefan Anzinger <stefan.anzinger@gmail.com>
date Thu, 24 Apr 2014 14:09:40 +0200
parents e5a8608f7d63
children 2fc9d69be77e
files graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCConstDataOp.java
diffstat 1 files changed, 9 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCConstDataOp.java	Thu Apr 24 14:02:20 2014 +0200
+++ b/graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCConstDataOp.java	Thu Apr 24 14:09:40 2014 +0200
@@ -2,12 +2,17 @@
 
 import static com.oracle.graal.lir.LIRInstruction.OperandFlag.*;
 
+import com.oracle.graal.api.code.*;
 import com.oracle.graal.api.code.CompilationResult.RawData;
 import com.oracle.graal.api.meta.*;
 import com.oracle.graal.asm.sparc.*;
+import com.oracle.graal.lir.*;
 import com.oracle.graal.lir.asm.*;
 import com.oracle.graal.lir.sparc.SPARCMove.LoadAddressOp;
+import com.oracle.graal.sparc.*;
+import com.sun.javafx.binding.SelectBinding.*;
 
+@Opcode("CONST_DATA")
 public class SPARCConstDataOp extends SPARCLIRInstruction {
 
     @Def({REG}) private AllocatableValue dst;
@@ -20,8 +25,10 @@
 
     @Override
     public void emitCode(CompilationResultBuilder crb, SPARCMacroAssembler masm) {
-        RawData data = new RawData(val, 16);
-        new LoadAddressOp(dst, (SPARCAddress) crb.recordDataReferenceInCode(data)).emitCode(crb);
+        Register dstReg = ValueUtil.asLongReg(dst);
+        long addr = 0; // Will be fixed up by the loader
+        new SPARCAssembler.Sethi((int) addr, dstReg).emit(masm);
+        new SPARCAssembler.Add(SPARC.g0, (int) addr, dstReg).emit(masm);
     }
 
 }