diff graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/LoadMethodNode.java @ 15725:ef6b8d1898e6

Add resolved receiver type to ResolvedJavaMethod.isInVirtualMethodTable in order to be able to do vtable-calls for miranda and default methods
author Gilles Duboscq <duboscq@ssw.jku.at>
date Sat, 17 May 2014 14:57:58 +0200
parents 820c6d353358
children b1be2a46cc5c
line wrap: on
line diff
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/LoadMethodNode.java	Sat May 17 11:41:35 2014 +0200
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/LoadMethodNode.java	Sat May 17 14:57:58 2014 +0200
@@ -34,18 +34,20 @@
 
     @Input private ValueNode hub;
     private final ResolvedJavaMethod method;
+    private final ResolvedJavaType receiverType;
 
     public ValueNode getHub() {
         return hub;
     }
 
-    public LoadMethodNode(ResolvedJavaMethod method, ValueNode hub, Kind kind) {
+    public LoadMethodNode(ResolvedJavaMethod method, ResolvedJavaType receiverType, ValueNode hub, Kind kind) {
         super(kind == Kind.Object ? StampFactory.objectNonNull() : StampFactory.forKind(kind));
+        this.receiverType = receiverType;
         this.hub = hub;
         this.method = method;
         assert !method.isAbstract() : "Cannot load abstract method from a hub";
         assert !method.isStatic() : "Cannot load a static method from a hub";
-        assert method.isInVirtualMethodTable();
+        assert method.isInVirtualMethodTable(receiverType);
     }
 
     @Override
@@ -56,4 +58,8 @@
     public ResolvedJavaMethod getMethod() {
         return method;
     }
+
+    public ResolvedJavaType getReceiverType() {
+        return receiverType;
+    }
 }