src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.replacements/src/org/graalvm/compiler/replacements/nodes/MacroNode.java
--- a/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.replacements/src/org/graalvm/compiler/replacements/nodes/MacroNode.java Fri Mar 16 11:26:05 2018 +0000
+++ b/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.replacements/src/org/graalvm/compiler/replacements/nodes/MacroNode.java Fri Mar 16 22:59:32 2018 -0700
@@ -29,12 +29,16 @@
import org.graalvm.compiler.api.replacements.MethodSubstitution;
import org.graalvm.compiler.api.replacements.Snippet;
import org.graalvm.compiler.core.common.type.StampPair;
+import org.graalvm.compiler.debug.DebugCloseable;
import org.graalvm.compiler.debug.DebugContext;
import org.graalvm.compiler.debug.GraalError;
+import org.graalvm.compiler.graph.Node;
import org.graalvm.compiler.graph.NodeClass;
import org.graalvm.compiler.graph.NodeInputList;
import org.graalvm.compiler.nodeinfo.NodeInfo;
import org.graalvm.compiler.nodes.CallTargetNode.InvokeKind;
+import org.graalvm.compiler.nodes.FixedNode;
+import org.graalvm.compiler.nodes.Invokable;
import org.graalvm.compiler.nodes.FixedWithNextNode;
import org.graalvm.compiler.nodes.FrameState;
import org.graalvm.compiler.nodes.InvokeNode;
@@ -75,7 +79,7 @@
size = SIZE_UNKNOWN,
sizeRationale = "If this node is not optimized away it will be lowered to a call, which we cannot estimate")
//@formatter:on
-public abstract class MacroNode extends FixedWithNextNode implements Lowerable {
+public abstract class MacroNode extends FixedWithNextNode implements Lowerable, Invokable {
public static final NodeClass<MacroNode> TYPE = NodeClass.create(MacroNode.class);
@Input protected NodeInputList<ValueNode> arguments;
@@ -108,10 +112,12 @@
return arguments.toArray(new ValueNode[0]);
}
- public int getBci() {
+ @Override
+ public int bci() {
return bci;
}
+ @Override
public ResolvedJavaMethod getTargetMethod() {
return targetMethod;
}
@@ -120,6 +126,16 @@
return null;
}
+ @Override
+ protected void afterClone(Node other) {
+ updateInliningLogAfterClone(other);
+ }
+
+ @Override
+ public FixedNode asFixedNode() {
+ return this;
+ }
+
/**
* Gets a snippet to be used for lowering this macro node. The returned graph (if non-null) must
* have been {@linkplain #lowerReplacement(StructuredGraph, LoweringTool) lowered}.
@@ -196,10 +212,13 @@
}
}
+ @SuppressWarnings("try")
public InvokeNode replaceWithInvoke() {
- InvokeNode invoke = createInvoke();
- graph().replaceFixedWithFixed(this, invoke);
- return invoke;
+ try (DebugCloseable context = withNodeSourcePosition()) {
+ InvokeNode invoke = createInvoke();
+ graph().replaceFixedWithFixed(this, invoke);
+ return invoke;
+ }
}
protected InvokeNode createInvoke() {