# HG changeset patch # User Roland Schatz # Date 1413206762 -7200 # Node ID 2915eff532d41bd8f4c167ec36852df83972581e # Parent f7ba2423fbc3016908115411b840ef1dd218deb1 Fix code generation problem with sub-int Constants. diff -r f7ba2423fbc3 -r 2915eff532d4 graal/com.oracle.graal.baseline/src/com/oracle/graal/baseline/BaselineBytecodeParser.java --- a/graal/com.oracle.graal.baseline/src/com/oracle/graal/baseline/BaselineBytecodeParser.java Mon Oct 13 12:10:16 2014 +0200 +++ b/graal/com.oracle.graal.baseline/src/com/oracle/graal/baseline/BaselineBytecodeParser.java Mon Oct 13 15:26:02 2014 +0200 @@ -595,7 +595,7 @@ @Override protected Value appendConstant(Constant constant) { - return gen.emitLoadConstant(constant); + return gen.emitLoadConstant(constant.getLIRKind(), constant); } @Override diff -r f7ba2423fbc3 -r 2915eff532d4 graal/com.oracle.graal.lir/src/com/oracle/graal/lir/gen/LIRGenerator.java --- a/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/gen/LIRGenerator.java Mon Oct 13 12:10:16 2014 +0200 +++ b/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/gen/LIRGenerator.java Mon Oct 13 15:26:02 2014 +0200 @@ -118,7 +118,7 @@ } @Override - public Value emitLoadConstant(Constant constant) { + public Value emitLoadConstant(LIRKind kind, Constant constant) { if (canInlineConstant(constant)) { return constant; } else { diff -r f7ba2423fbc3 -r 2915eff532d4 graal/com.oracle.graal.lir/src/com/oracle/graal/lir/gen/LIRGeneratorTool.java --- a/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/gen/LIRGeneratorTool.java Mon Oct 13 12:10:16 2014 +0200 +++ b/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/gen/LIRGeneratorTool.java Mon Oct 13 15:26:02 2014 +0200 @@ -52,7 +52,7 @@ void doBlockEnd(AbstractBlock block); - Value emitLoadConstant(Constant constant); + Value emitLoadConstant(LIRKind kind, Constant constant); Value emitLoad(LIRKind kind, Value address, LIRFrameState state); diff -r f7ba2423fbc3 -r 2915eff532d4 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ConstantNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ConstantNode.java Mon Oct 13 12:10:16 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ConstantNode.java Mon Oct 13 15:26:02 2014 +0200 @@ -94,7 +94,8 @@ if (onlyUsedInVirtualState()) { gen.setResult(this, value); } else { - gen.setResult(this, gen.getLIRGeneratorTool().emitLoadConstant(value)); + LIRKind kind = gen.getLIRGeneratorTool().getLIRKind(stamp()); + gen.setResult(this, gen.getLIRGeneratorTool().emitLoadConstant(kind, value)); } }