# HG changeset patch # User Josef Eisl # Date 1395238393 -3600 # Node ID 61821c3e9235ce125f80cbcb50ddd3ee52147f30 # Parent f200eb89072992c672959efafac330dfbba8d901 Track AbstractBlock in LIRGenerator. diff -r f200eb890729 -r 61821c3e9235 graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/gen/LIRGenerator.java --- a/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/gen/LIRGenerator.java Wed Mar 19 15:10:28 2014 +0100 +++ b/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/gen/LIRGenerator.java Wed Mar 19 15:13:13 2014 +0100 @@ -74,7 +74,7 @@ private final NodeMap nodeOperands; private final DebugInfoBuilder debugInfoBuilder; - protected Block currentBlock; + protected AbstractBlock currentBlock; private final int traceLevel; private final boolean printIRWithLIR; @@ -250,13 +250,14 @@ constantLoads = new HashMap<>(); } LoadConstant load = constantLoads.get(value); + assert currentBlock instanceof Block; if (load == null) { int index = res.getLIR().getLIRforBlock(currentBlock).size(); loadedValue = emitMove(value); LIRInstruction op = res.getLIR().getLIRforBlock(currentBlock).get(index); - constantLoads.put(value, new LoadConstant(loadedValue, currentBlock, index, op)); + constantLoads.put(value, new LoadConstant(loadedValue, (Block) currentBlock, index, op)); } else { - Block dominator = ControlFlowGraph.commonDominator(load.block, currentBlock); + Block dominator = ControlFlowGraph.commonDominator(load.block, (Block) currentBlock); loadedValue = load.variable; if (dominator != load.block) { load.unpin(res.getLIR()); @@ -341,7 +342,8 @@ int suxIndex = currentBlock.getSuccessors().indexOf(result); assert suxIndex != -1 : "Block not in successor list of current block"; - return LabelRef.forSuccessor(res.getLIR(), currentBlock, suxIndex); + assert currentBlock instanceof Block; + return LabelRef.forSuccessor(res.getLIR(), (Block) currentBlock, suxIndex); } /** diff -r f200eb890729 -r 61821c3e9235 graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotLIRGenerator.java --- a/graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotLIRGenerator.java Wed Mar 19 15:10:28 2014 +0100 +++ b/graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotLIRGenerator.java Wed Mar 19 15:13:13 2014 +0100 @@ -59,6 +59,7 @@ import com.oracle.graal.lir.amd64.AMD64Move.StoreOp; import com.oracle.graal.nodes.*; import com.oracle.graal.nodes.calc.*; +import com.oracle.graal.nodes.cfg.*; import com.oracle.graal.nodes.extended.*; import com.oracle.graal.nodes.java.*; import com.oracle.graal.nodes.java.MethodCallTargetNode.InvokeKind; @@ -163,7 +164,8 @@ emitIncomingValues(params); - saveRbp = new SaveRbp(new NoOp(currentBlock, res.getLIR().getLIRforBlock(currentBlock).size())); + assert currentBlock instanceof Block; + saveRbp = new SaveRbp(new NoOp((Block) currentBlock, res.getLIR().getLIRforBlock(currentBlock).size())); append(saveRbp.placeholder); for (ParameterNode param : graph.getNodes(ParameterNode.class)) {