Mercurial > hg > truffle
changeset 18717:2206dae9a802
[SPARC] Allow null base register on memory access
author | Stefan Anzinger <stefan.anzinger@oracle.com> |
---|---|
date | Wed, 17 Dec 2014 16:50:38 +0100 |
parents | 5dcb9fdea75a |
children | 305e6a73117d |
files | graal/com.oracle.graal.asm.sparc/src/com/oracle/graal/asm/sparc/SPARCAssembler.java graal/com.oracle.graal.compiler.sparc/src/com/oracle/graal/compiler/sparc/SPARCLIRGenerator.java graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotLIRGenerator.java |
diffstat | 3 files changed, 6 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/graal/com.oracle.graal.asm.sparc/src/com/oracle/graal/asm/sparc/SPARCAssembler.java Wed Dec 17 08:04:57 2014 +0100 +++ b/graal/com.oracle.graal.asm.sparc/src/com/oracle/graal/asm/sparc/SPARCAssembler.java Wed Dec 17 16:50:38 2014 +0100 @@ -1263,9 +1263,9 @@ } public void verify() { - assert ((rd << RD_SHIFT) & RD_MASK) == (rd << RD_SHIFT); - assert ((op3 << OP3_SHIFT) & OP3_MASK) == (op3 << OP3_SHIFT); - assert ((rs1 << RS1_SHIFT) & RS1_MASK) == (rs1 << RS1_SHIFT); + assert ((rd << RD_SHIFT) & RD_MASK) == (rd << RD_SHIFT) : rd; + assert ((op3 << OP3_SHIFT) & OP3_MASK) == (op3 << OP3_SHIFT) : op3; + assert ((rs1 << RS1_SHIFT) & RS1_MASK) == (rs1 << RS1_SHIFT) : rs1; assert ((i << I_SHIFT) & I_MASK) == (i << I_SHIFT); assert ((immAsi << IMM_ASI_SHIFT) & IMM_ASI_MASK) == (immAsi << IMM_ASI_SHIFT); assert ((rs2 << RS2_SHIFT) & RS2_MASK) == (rs2 << RS2_SHIFT);
--- a/graal/com.oracle.graal.compiler.sparc/src/com/oracle/graal/compiler/sparc/SPARCLIRGenerator.java Wed Dec 17 08:04:57 2014 +0100 +++ b/graal/com.oracle.graal.compiler.sparc/src/com/oracle/graal/compiler/sparc/SPARCLIRGenerator.java Wed Dec 17 16:50:38 2014 +0100 @@ -123,7 +123,7 @@ long finalDisp = displacement; if (isConstant(base)) { if (asConstant(base).isNull()) { - baseRegister = Value.ILLEGAL; + baseRegister = SPARC.g0.asValue(); } else if (asConstant(base).getKind() != Kind.Object) { finalDisp += asConstant(base).asLong(); baseRegister = Value.ILLEGAL;
--- a/graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotLIRGenerator.java Wed Dec 17 08:04:57 2014 +0100 +++ b/graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotLIRGenerator.java Wed Dec 17 16:50:38 2014 +0100 @@ -353,7 +353,8 @@ } public void emitNullCheck(Value address, LIRFrameState state) { - assert address.getKind() == Kind.Object : address + " - " + address.getKind() + " not an object!"; + PlatformKind kind = address.getLIRKind().getPlatformKind(); + assert kind == Kind.Object || kind == Kind.Long : address + " - " + kind + " not an object!"; append(new NullCheckOp(load(address), state)); } }