changeset 22518:f5a11121bbee

Fix ClassCastException in ConstantLoadOptimization.
author Roland Schatz <roland.schatz@oracle.com>
date Thu, 27 Aug 2015 09:59:35 +0200
parents 9f627bdaca98
children 782cccbfa453
files graal/com.oracle.graal.lir/src/com/oracle/graal/lir/constopt/ConstantLoadOptimization.java graal/com.oracle.graal.lir/src/com/oracle/graal/lir/constopt/DefUseTree.java
diffstat 2 files changed, 5 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/constopt/ConstantLoadOptimization.java	Wed Aug 26 15:22:34 2015 -0700
+++ b/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/constopt/ConstantLoadOptimization.java	Thu Aug 27 09:59:35 2015 +0200
@@ -149,7 +149,7 @@
                 return false;
             }
             LoadConstantOp load = (LoadConstantOp) inst;
-            return isVariable(load.getResult());
+            return isVariable(load.getResult()) && load.getConstant() instanceof JavaConstant;
         }
 
         private void addUsageToBlockMap(UseEntry entry) {
@@ -286,12 +286,12 @@
             }
         }
 
-        private void insertLoad(JavaConstant constant, LIRKind kind, AbstractBlockBase<?> block, List<UseEntry> usages) {
+        private void insertLoad(Constant constant, LIRKind kind, AbstractBlockBase<?> block, List<UseEntry> usages) {
             assert usages != null && usages.size() > 0 : String.format("No usages %s %s %s", constant, block, usages);
             // create variable
             Variable variable = lirGen.newVariable(kind);
             // create move
-            LIRInstruction move = lirGen.getSpillMoveFactory().createMove(variable, constant);
+            LIRInstruction move = lirGen.getSpillMoveFactory().createMove(variable, (JavaConstant) constant);
             // insert instruction
             getInsertionBuffer(block).append(1, move);
             Debug.log("new move (%s) and inserted in block %s", move, block);
--- a/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/constopt/DefUseTree.java	Wed Aug 26 15:22:34 2015 -0700
+++ b/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/constopt/DefUseTree.java	Thu Aug 27 09:59:35 2015 +0200
@@ -50,8 +50,8 @@
         return (Variable) instruction.getResult();
     }
 
-    public JavaConstant getConstant() {
-        return (JavaConstant) instruction.getConstant();
+    public Constant getConstant() {
+        return instruction.getConstant();
     }
 
     public LIRInstruction getInstruction() {