Mercurial > hg > truffle
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;