diff graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/MethodCallTargetNode.java @ 5283:8dd6165d7b73

compute returnStamp on demand in MethodCallTargetNode
author Lukas Stadler <lukas.stadler@jku.at>
date Tue, 24 Apr 2012 17:11:45 +0200
parents e808627bd16f
children 0ebd9cfdc11f
line wrap: on
line diff
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/MethodCallTargetNode.java	Tue Apr 24 17:11:10 2012 +0200
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/MethodCallTargetNode.java	Tue Apr 24 17:11:45 2012 +0200
@@ -40,7 +40,6 @@
     @Data private final RiType returnType;
     @Data private RiResolvedMethod targetMethod;
     @Data private InvokeKind invokeKind;
-    private final Stamp returnStamp;
 
     /**
      * @param arguments
@@ -50,12 +49,6 @@
         this.invokeKind = invokeKind;
         this.returnType = returnType;
         this.targetMethod = targetMethod;
-        CiKind returnKind = targetMethod.signature().returnKind(false);
-        if (returnKind == CiKind.Object && returnType instanceof RiResolvedType) {
-            returnStamp = StampFactory.declared((RiResolvedType) returnType);
-        } else {
-            returnStamp = StampFactory.forKind(returnKind);
-        }
     }
 
     @Override
@@ -146,6 +139,11 @@
     }
 
     public Stamp returnStamp() {
-        return returnStamp;
+        CiKind returnKind = targetMethod.signature().returnKind(false);
+        if (returnKind == CiKind.Object && returnType instanceof RiResolvedType) {
+            return StampFactory.declared((RiResolvedType) returnType);
+        } else {
+            return StampFactory.forKind(returnKind);
+        }
     }
 }