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;
+    }
 }