# HG changeset patch # User Gilles Duboscq # Date 1376754741 -7200 # Node ID 231c8a83cf41ef056e89aabcfa68dd24e4d48594 # Parent b4009c075969da3a137c0a31a6f9078e6e089a9e Samll additions to Loops api, make IntegerExactArithmeticNodes iterable diff -r b4009c075969 -r 231c8a83cf41 graal/com.oracle.graal.loop/src/com/oracle/graal/loop/CountedLoopInfo.java --- a/graal/com.oracle.graal.loop/src/com/oracle/graal/loop/CountedLoopInfo.java Sat Aug 17 15:07:41 2013 +0200 +++ b/graal/com.oracle.graal.loop/src/com/oracle/graal/loop/CountedLoopInfo.java Sat Aug 17 17:52:21 2013 +0200 @@ -126,6 +126,10 @@ return iv.direction(); } + public InductionVariable getCounter() { + return iv; + } + public GuardingNode getOverFlowGuard() { return loop.loopBegin().getOverflowGuard(); } diff -r b4009c075969 -r 231c8a83cf41 graal/com.oracle.graal.loop/src/com/oracle/graal/loop/LoopsData.java --- a/graal/com.oracle.graal.loop/src/com/oracle/graal/loop/LoopsData.java Sat Aug 17 15:07:41 2013 +0200 +++ b/graal/com.oracle.graal.loop/src/com/oracle/graal/loop/LoopsData.java Sat Aug 17 17:52:21 2013 +0200 @@ -78,6 +78,18 @@ return loops; } + public List innerFirst() { + ArrayList loops = new ArrayList<>(loops()); + Collections.sort(loops, new Comparator() { + + @Override + public int compare(LoopEx o1, LoopEx o2) { + return o2.lirLoop().depth - o1.lirLoop().depth; + } + }); + return loops; + } + public Collection countedLoops() { List counted = new LinkedList<>(); for (LoopEx loop : loops()) { diff -r b4009c075969 -r 231c8a83cf41 graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/arithmetic/IntegerExactArithmeticNode.java --- a/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/arithmetic/IntegerExactArithmeticNode.java Sat Aug 17 15:07:41 2013 +0200 +++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/arithmetic/IntegerExactArithmeticNode.java Sat Aug 17 17:52:21 2013 +0200 @@ -22,10 +22,11 @@ */ package com.oracle.graal.truffle.nodes.arithmetic; +import com.oracle.graal.graph.*; import com.oracle.graal.nodes.*; import com.oracle.graal.nodes.spi.*; -interface IntegerExactArithmeticNode extends Lowerable { +interface IntegerExactArithmeticNode extends Lowerable, Node.IterableNodeType { IntegerExactArithmeticSplitNode createSplit(AbstractBeginNode next, AbstractBeginNode deopt); }