src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.loop/src/org/graalvm/compiler/loop/LoopFragmentInside.java
--- a/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.loop/src/org/graalvm/compiler/loop/LoopFragmentInside.java Fri Mar 16 11:26:05 2018 +0000
+++ b/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.loop/src/org/graalvm/compiler/loop/LoopFragmentInside.java Fri Mar 16 22:59:32 2018 -0700
@@ -28,6 +28,7 @@
import org.graalvm.collections.EconomicMap;
import org.graalvm.collections.Equivalence;
+import org.graalvm.compiler.debug.DebugCloseable;
import org.graalvm.compiler.debug.DebugContext;
import org.graalvm.compiler.debug.GraalError;
import org.graalvm.compiler.graph.Graph.DuplicationReplacement;
@@ -338,6 +339,7 @@
}
@Override
+ @SuppressWarnings("try")
protected DuplicationReplacement getDuplicationReplacement() {
final LoopBeginNode loopBegin = loop().loopBegin();
final StructuredGraph graph = graph();
@@ -347,34 +349,36 @@
@Override
public Node replacement(Node original) {
- if (original == loopBegin) {
- Node value = seenNode.get(original);
- if (value != null) {
- return value;
- }
- AbstractBeginNode newValue = graph.add(new BeginNode());
- seenNode.put(original, newValue);
- return newValue;
- }
- if (original instanceof LoopExitNode && ((LoopExitNode) original).loopBegin() == loopBegin) {
- Node value = seenNode.get(original);
- if (value != null) {
- return value;
+ try (DebugCloseable position = original.withNodeSourcePosition()) {
+ if (original == loopBegin) {
+ Node value = seenNode.get(original);
+ if (value != null) {
+ return value;
+ }
+ AbstractBeginNode newValue = graph.add(new BeginNode());
+ seenNode.put(original, newValue);
+ return newValue;
}
- AbstractBeginNode newValue = graph.add(new BeginNode());
- seenNode.put(original, newValue);
- return newValue;
+ if (original instanceof LoopExitNode && ((LoopExitNode) original).loopBegin() == loopBegin) {
+ Node value = seenNode.get(original);
+ if (value != null) {
+ return value;
+ }
+ AbstractBeginNode newValue = graph.add(new BeginNode());
+ seenNode.put(original, newValue);
+ return newValue;
+ }
+ if (original instanceof LoopEndNode && ((LoopEndNode) original).loopBegin() == loopBegin) {
+ Node value = seenNode.get(original);
+ if (value != null) {
+ return value;
+ }
+ EndNode newValue = graph.add(new EndNode());
+ seenNode.put(original, newValue);
+ return newValue;
+ }
+ return original;
}
- if (original instanceof LoopEndNode && ((LoopEndNode) original).loopBegin() == loopBegin) {
- Node value = seenNode.get(original);
- if (value != null) {
- return value;
- }
- EndNode newValue = graph.add(new EndNode());
- seenNode.put(original, newValue);
- return newValue;
- }
- return original;
}
};
}