Mercurial > hg > graal-jvmci-8
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); } }