changeset 15989:f62cc9f09c7b

Backed out changeset: a750e0d83535 (cache last receiver stamp in MethodCallTargetNode)
author Lukas Stadler <lukas.stadler@oracle.com>
date Mon, 02 Jun 2014 17:09:51 +0200
parents 5aaef6a8985d
children ba0e3c75bd49
files graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/MethodCallTargetNode.java
diffstat 1 files changed, 3 insertions(+), 10 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/MethodCallTargetNode.java	Sun Jun 01 16:06:07 2014 +0200
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/MethodCallTargetNode.java	Mon Jun 02 17:09:51 2014 +0200
@@ -42,8 +42,6 @@
     private ResolvedJavaMethod targetMethod;
     private InvokeKind invokeKind;
 
-    private transient Stamp lastCanonicalizedReceiverStamp;
-
     /**
      * @param arguments
      */
@@ -140,17 +138,12 @@
             }
 
             // check if the type of the receiver can narrow the result
-            Stamp receiverStamp = receiver().stamp();
-            if (receiverStamp.equals(lastCanonicalizedReceiverStamp)) {
-                return this;
-            }
-            lastCanonicalizedReceiverStamp = receiverStamp;
-
-            ResolvedJavaType type = StampTool.typeOrNull(receiverStamp);
+            ValueNode receiver = receiver();
+            ResolvedJavaType type = StampTool.typeOrNull(receiver);
             if (type != null && (invoke().stateAfter() != null || invoke().stateDuring() != null)) {
                 // either the holder class is exact, or the receiver object has an exact type
                 ResolvedJavaMethod resolvedMethod = type.resolveMethod(targetMethod, invoke().getContextType());
-                if (resolvedMethod != null && (resolvedMethod.canBeStaticallyBound() || StampTool.isExactType(receiverStamp))) {
+                if (resolvedMethod != null && (resolvedMethod.canBeStaticallyBound() || StampTool.isExactType(receiver))) {
                     invokeKind = InvokeKind.Special;
                     targetMethod = resolvedMethod;
                     return this;