changeset 22581:86062a3363a9

fix bug in PEA that appeared for certain phi->phi dependencies
author Lukas Stadler <lukas.stadler@oracle.com>
date Fri, 04 Sep 2015 15:10:21 +0200
parents 4a54a3aa7152
children 48558bdc9dbb
files graal/com.oracle.graal.virtual/src/com/oracle/graal/virtual/phases/ea/PartialEscapeClosure.java
diffstat 1 files changed, 6 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.virtual/src/com/oracle/graal/virtual/phases/ea/PartialEscapeClosure.java	Fri Sep 04 13:56:40 2015 +0200
+++ b/graal/com.oracle.graal.virtual/src/com/oracle/graal/virtual/phases/ea/PartialEscapeClosure.java	Fri Sep 04 15:10:21 2015 +0200
@@ -822,7 +822,12 @@
                 if (alias instanceof VirtualObjectNode) {
                     VirtualObjectNode virtual = (VirtualObjectNode) alias;
                     virtualObjs[i] = virtual;
-                    if (states[i].getObjectState(virtual).isVirtual()) {
+                    ObjectState objectState = states[i].getObjectStateOptional(virtual);
+                    if (objectState == null) {
+                        assert getPhiValueAt(phi, i) instanceof PhiNode : "this should only happen for phi nodes";
+                        return false;
+                    }
+                    if (objectState.isVirtual()) {
                         if (virtualObjs[0] != alias) {
                             uniqueVirtualObject = false;
                         }