changeset 22071:ad494e9b1e39

Make stamp of MacroNode agree with return type of method
author Tom Rodriguez <tom.rodriguez@oracle.com>
date Fri, 19 Jun 2015 22:32:15 -0700
parents 1f07c19e7d83
children eeeea6cc9139
files graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/MacroNode.java
diffstat 1 files changed, 10 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/MacroNode.java	Sat Jun 20 01:56:43 2015 +0200
+++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/MacroNode.java	Fri Jun 19 22:32:15 2015 -0700
@@ -68,7 +68,7 @@
     protected final InvokeKind invokeKind;
 
     protected MacroNode(NodeClass<? extends MacroNode> c, InvokeKind invokeKind, ResolvedJavaMethod targetMethod, int bci, JavaType returnType, ValueNode... arguments) {
-        super(c, StampFactory.forKind(returnType.getKind()));
+        super(c, returnStamp(returnType));
         assert targetMethod.getSignature().getParameterCount(!targetMethod.isStatic()) == arguments.length;
         this.arguments = new NodeInputList<>(this, arguments);
         this.bci = bci;
@@ -78,6 +78,15 @@
         assert !isPlaceholderBci(bci);
     }
 
+    private static Stamp returnStamp(JavaType returnType) {
+        Kind kind = returnType.getKind();
+        if (kind == Kind.Object) {
+            return StampFactory.declared((ResolvedJavaType) returnType);
+        } else {
+            return StampFactory.forKind(kind);
+        }
+    }
+
     public int getBci() {
         return bci;
     }