Mercurial > hg > graal-compiler
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() {