Mercurial > hg > graal-compiler
changeset 19263:b42653236a83
Transform LoopEx.nodesInLoopFrom into LoopEd nodesInLoopBranch
author | Gilles Duboscq <gilles.m.duboscq@oracle.com> |
---|---|
date | Tue, 10 Feb 2015 16:03:07 +0100 |
parents | 8632751713af |
children | fdb93d2ed5c8 |
files | graal/com.oracle.graal.loop/src/com/oracle/graal/loop/LoopEx.java graal/com.oracle.graal.loop/src/com/oracle/graal/loop/LoopPolicies.java |
diffstat | 2 files changed, 6 insertions(+), 9 deletions(-) [+] |
line wrap: on
line diff
--- a/graal/com.oracle.graal.loop/src/com/oracle/graal/loop/LoopEx.java Tue Feb 10 15:44:52 2015 +0100 +++ b/graal/com.oracle.graal.loop/src/com/oracle/graal/loop/LoopEx.java Tue Feb 10 16:03:07 2015 +0100 @@ -233,26 +233,23 @@ return data; } - public NodeBitMap nodesInLoopFrom(AbstractBeginNode point, AbstractBeginNode until) { + public NodeBitMap nodesInLoopBranch(AbstractBeginNode branch) { Collection<AbstractBeginNode> blocks = new LinkedList<>(); Collection<LoopExitNode> exits = new LinkedList<>(); Queue<Block> work = new LinkedList<>(); ControlFlowGraph cfg = loopsData().controlFlowGraph(); - work.add(cfg.blockFor(point)); - Block untilBlock = until != null ? cfg.blockFor(until) : null; + work.add(cfg.blockFor(branch)); while (!work.isEmpty()) { Block b = work.remove(); - if (b == untilBlock) { - continue; - } if (loop().getExits().contains(b)) { exits.add((LoopExitNode) b.getBeginNode()); - } else if (loop().getBlocks().contains(b)) { + } else { + assert loop().getBlocks().contains(b); blocks.add(b.getBeginNode()); work.addAll(b.getDominated()); } } - return LoopFragment.computeNodes(point.graph(), blocks, exits); + return LoopFragment.computeNodes(branch.graph(), blocks, exits); } public Map<Node, InductionVariable> getInductionVariables() {
--- a/graal/com.oracle.graal.loop/src/com/oracle/graal/loop/LoopPolicies.java Tue Feb 10 15:44:52 2015 +0100 +++ b/graal/com.oracle.graal.loop/src/com/oracle/graal/loop/LoopPolicies.java Tue Feb 10 16:03:07 2015 +0100 @@ -95,7 +95,7 @@ for (Node successor : controlSplit.successors()) { AbstractBeginNode branch = (AbstractBeginNode) successor; // this may count twice because of fall-through in switches - inBranchTotal += loop.nodesInLoopFrom(branch, postDom).count(); + inBranchTotal += loop.nodesInLoopBranch(branch).count(); double probability = controlSplit.probability(branch); if (probability > maxProbability) { maxProbability = probability;