changeset 17417:2915eff532d4

Fix code generation problem with sub-int Constants.
author Roland Schatz <roland.schatz@oracle.com>
date Mon, 13 Oct 2014 15:26:02 +0200
parents f7ba2423fbc3
children 393fe459eadc
files graal/com.oracle.graal.baseline/src/com/oracle/graal/baseline/BaselineBytecodeParser.java graal/com.oracle.graal.lir/src/com/oracle/graal/lir/gen/LIRGenerator.java graal/com.oracle.graal.lir/src/com/oracle/graal/lir/gen/LIRGeneratorTool.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ConstantNode.java
diffstat 4 files changed, 5 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- 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
--- 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 {
--- 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);
 
--- 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));
         }
     }