changeset 9721:65452ead4b71

Handle corner case in WordTypeVerificationPhase
author Christian Wimmer <christian.wimmer@oracle.com>
date Wed, 15 May 2013 14:30:29 -0700
parents d30cc6543973
children b5dd7e3c8c80 7421f2894cfc
files graal/com.oracle.graal.word/src/com/oracle/graal/word/phases/WordTypeVerificationPhase.java
diffstat 1 files changed, 10 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.word/src/com/oracle/graal/word/phases/WordTypeVerificationPhase.java	Wed May 15 17:29:30 2013 +0200
+++ b/graal/com.oracle.graal.word/src/com/oracle/graal/word/phases/WordTypeVerificationPhase.java	Wed May 15 14:30:29 2013 -0700
@@ -114,6 +114,16 @@
     }
 
     private boolean isWord(ValueNode node) {
+        if (node instanceof ProxyNode) {
+            /*
+             * The proxy node will eventually get the same stamp as the value it is proxying.
+             * However, since we cannot guarantee the order in which isWord is called during the
+             * verification phase, the stamp assignment for the value might not have happened yet.
+             * Therefore, we check the proxied value directly instead of the proxy.
+             */
+            return isWord(((ProxyNode) node).value());
+        }
+
         return wordAccess.isWord(node);
     }