Mercurial > hg > truffle
diff graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/CallTargetNode.java @ 16564:688f84e397a3
Move the target method from MethodCallTargetNode and LoweredCallTargetNode to their superclass CallTargetNode
author | Gilles Duboscq <duboscq@ssw.jku.at> |
---|---|
date | Mon, 14 Jul 2014 14:00:55 +0200 |
parents | 1e63cb55f61d |
children | 2b63e51e7789 |
line wrap: on
line diff
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/CallTargetNode.java Mon Jul 14 13:55:01 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/CallTargetNode.java Mon Jul 14 14:00:55 2014 +0200 @@ -24,13 +24,13 @@ import java.util.*; +import com.oracle.graal.api.meta.*; import com.oracle.graal.compiler.common.type.*; import com.oracle.graal.graph.*; import com.oracle.graal.nodes.spi.*; @NodeInfo(allowedUsageTypes = {InputType.Extension}) public abstract class CallTargetNode extends ValueNode implements LIRLowerable { - public enum InvokeKind { Interface, Special, @@ -39,14 +39,17 @@ } @Input private final NodeInputList<ValueNode> arguments; + private ResolvedJavaMethod targetMethod; - public CallTargetNode(ValueNode[] arguments) { + public CallTargetNode(ValueNode[] arguments, ResolvedJavaMethod targetMethod) { super(StampFactory.forVoid()); + this.targetMethod = targetMethod; this.arguments = new NodeInputList<>(this, arguments); } - public CallTargetNode(List<ValueNode> arguments) { + public CallTargetNode(List<ValueNode> arguments, ResolvedJavaMethod targetMethod) { super(StampFactory.forVoid()); + this.targetMethod = targetMethod; this.arguments = new NodeInputList<>(this, arguments); } @@ -65,4 +68,17 @@ public void generate(NodeLIRBuilderTool gen) { // nop } + + public void setTargetMethod(ResolvedJavaMethod method) { + targetMethod = method; + } + + /** + * Gets the target method for this invocation instruction. + * + * @return the target method + */ + public ResolvedJavaMethod targetMethod() { + return targetMethod; + } }