changeset 21239:ad3a3c192be6

NodeLIRBuilder: relax verification of derived kinds for PHIs (aka look at stack kinds).
author Josef Eisl <josef.eisl@jku.at>
date Thu, 30 Apr 2015 15:32:34 +0200
parents 975879e2cb49
children 1e9242c9735e
files graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/gen/NodeLIRBuilder.java
diffstat 1 files changed, 8 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/gen/NodeLIRBuilder.java	Thu Apr 30 11:04:06 2015 +0200
+++ b/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/gen/NodeLIRBuilder.java	Thu Apr 30 15:32:34 2015 +0200
@@ -205,9 +205,15 @@
             }
         }
         LIRKind derivedKind = LIRKind.merge(values.toArray(new Value[values.size()]));
+        assert verifyPHIKind(derivedKind, gen.getLIRKind(phi.stamp()));
+        return derivedKind;
+    }
+
+    private static boolean verifyPHIKind(LIRKind derivedKind, LIRKind phiKind) {
         assert derivedKind.getPlatformKind() != Kind.Object || !derivedKind.isDerivedReference();
-        assert derivedKind.getPlatformKind().equals(gen.getLIRKind(phi.stamp()).getPlatformKind());
-        return derivedKind;
+        PlatformKind phiPlatformKind = phiKind.getPlatformKind();
+        assert derivedKind.getPlatformKind().equals(phiPlatformKind instanceof Kind ? ((Kind) phiPlatformKind).getStackKind() : phiPlatformKind);
+        return true;
     }
 
     private static boolean isPhiInputFromBackedge(PhiNode phi, int index) {