Mercurial > hg > truffle
diff graal/com.oracle.graal.baseline/src/com/oracle/graal/baseline/BaselineControlFlowGraph.java @ 18863:7a44368257f0
BaselineCompiler: fix predecessor calculation.
author | Josef Eisl <josef.eisl@jku.at> |
---|---|
date | Tue, 13 Jan 2015 19:45:42 +0100 |
parents | ade7699e160e |
children |
line wrap: on
line diff
--- a/graal/com.oracle.graal.baseline/src/com/oracle/graal/baseline/BaselineControlFlowGraph.java Wed Jan 14 02:45:49 2015 +0100 +++ b/graal/com.oracle.graal.baseline/src/com/oracle/graal/baseline/BaselineControlFlowGraph.java Tue Jan 13 19:45:42 2015 +0100 @@ -38,6 +38,7 @@ public static BaselineControlFlowGraph compute(BciBlockMapping blockMap) { try (Scope ds = Debug.scope("BaselineCFG", blockMap)) { BaselineControlFlowGraph cfg = new BaselineControlFlowGraph(blockMap); + cfg.computePredecessors(); cfg.computeLoopInformation(blockMap); AbstractControlFlowGraph.computeDominators(cfg); @@ -69,6 +70,22 @@ return null; } + /** + * Create and populate the predecessor list. + */ + private void computePredecessors() { + // set predecessors + for (BciBlock block : blocks) { + block.setPredecessors(new ArrayList<>(4)); + } + // calculate predecessors + for (BciBlock block : blocks) { + for (BciBlock succ : block.getSuccessors()) { + succ.getPredecessors().add(block); + } + } + } + private void computeLoopInformation(BciBlockMapping blockMap) { try (Indent indent = Debug.logAndIndent("computeLoopInformation")) { for (BciBlock block : blocks) {