diff graal/com.oracle.max.graal.nodes/src/com/oracle/max/graal/nodes/java/MethodCallTargetNode.java @ 4594:eb6df44a1374

bugfixes, added bytecode complexity estimation
author Christian Haeubl <christian.haeubl@oracle.com>
date Tue, 14 Feb 2012 13:53:25 -0800
parents cd2b68ef8e23
children 82fc1c96f705
line wrap: on
line diff
--- a/graal/com.oracle.max.graal.nodes/src/com/oracle/max/graal/nodes/java/MethodCallTargetNode.java	Tue Feb 14 10:21:38 2012 -0800
+++ b/graal/com.oracle.max.graal.nodes/src/com/oracle/max/graal/nodes/java/MethodCallTargetNode.java	Tue Feb 14 13:53:25 2012 -0800
@@ -134,12 +134,18 @@
             ValueNode receiver = receiver();
             if (receiver != null && receiver.exactType() != null) {
                 if (invokeKind == InvokeKind.Interface) {
-                    invokeKind = InvokeKind.Virtual;
-                    targetMethod = receiver.exactType().resolveMethodImpl(targetMethod);
+                    RiResolvedMethod method = receiver.exactType().resolveMethodImpl(targetMethod);
+                    if (method != null) {
+                        invokeKind = InvokeKind.Virtual;
+                        targetMethod = method;
+                    }
                 }
                 if (receiver.isConstant() && invokeKind == InvokeKind.Virtual) {
-                    invokeKind = InvokeKind.Special;
-                    targetMethod = receiver.exactType().resolveMethodImpl(targetMethod);
+                    RiResolvedMethod method = receiver.exactType().resolveMethodImpl(targetMethod);
+                    if (method != null) {
+                        invokeKind = InvokeKind.Special;
+                        targetMethod = method;
+                    }
                 }
             }
         }