# HG changeset patch # User Lukas Stadler # Date 1401721791 -7200 # Node ID f62cc9f09c7bf3398ea8efdc3a93b02d67a23ab2 # Parent 5aaef6a8985d275539e1ba39357bccf508e63ba1 Backed out changeset: a750e0d83535 (cache last receiver stamp in MethodCallTargetNode) diff -r 5aaef6a8985d -r f62cc9f09c7b graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/MethodCallTargetNode.java --- 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;