# HG changeset patch # User Gilles Duboscq # Date 1397481197 -7200 # Node ID c680646518475170b60fa52d790938804ece0261 # Parent c92546febda6dfdbe8cbd27c456303232e5abbad Make prim method from LoopFragmentInside to an abstract method on LoopFragment diff -r c92546febda6 -r c68064651847 graal/com.oracle.graal.loop/src/com/oracle/graal/loop/LoopFragment.java --- a/graal/com.oracle.graal.loop/src/com/oracle/graal/loop/LoopFragment.java Mon Apr 14 15:08:36 2014 +0200 +++ b/graal/com.oracle.graal.loop/src/com/oracle/graal/loop/LoopFragment.java Mon Apr 14 15:13:17 2014 +0200 @@ -79,6 +79,15 @@ duplicationMap.put(oldNode, newNode); } + /** + * Gets the corresponding value in this fragment. Should be called on duplicate fragments with a + * node from the original fragment as argument. + * + * @param b original value + * @return corresponding value in the peel + */ + protected abstract ValueNode prim(ValueNode b); + public boolean isDuplicate() { return original != null; } diff -r c92546febda6 -r c68064651847 graal/com.oracle.graal.loop/src/com/oracle/graal/loop/LoopFragmentInside.java --- a/graal/com.oracle.graal.loop/src/com/oracle/graal/loop/LoopFragmentInside.java Mon Apr 14 15:08:36 2014 +0200 +++ b/graal/com.oracle.graal.loop/src/com/oracle/graal/loop/LoopFragmentInside.java Mon Apr 14 15:13:17 2014 +0200 @@ -229,7 +229,8 @@ * @param b original value * @return corresponding value in the peel */ - private ValueNode prim(ValueNode b) { + @Override + protected ValueNode prim(ValueNode b) { assert isDuplicate(); LoopBeginNode loopBegin = original().loop().loopBegin(); if (loopBegin.isPhiAtMerge(b)) { diff -r c92546febda6 -r c68064651847 graal/com.oracle.graal.loop/src/com/oracle/graal/loop/LoopFragmentWhole.java --- a/graal/com.oracle.graal.loop/src/com/oracle/graal/loop/LoopFragmentWhole.java Mon Apr 14 15:08:36 2014 +0200 +++ b/graal/com.oracle.graal.loop/src/com/oracle/graal/loop/LoopFragmentWhole.java Mon Apr 14 15:13:17 2014 +0200 @@ -63,6 +63,11 @@ } @Override + protected ValueNode prim(ValueNode b) { + return getDuplicatedNode(b); + } + + @Override protected DuplicationReplacement getDuplicationReplacement() { final FixedNode entry = loop().entryPoint(); final Graph graph = this.graph();