changeset 6656:5bb9511a6764

first part of PEA refactoring, fixes
author Lukas Stadler <lukas.stadler@jku.at>
date Wed, 31 Oct 2012 10:33:01 +0100
parents b01f9c391e17
children 768793150bcd
files graal/com.oracle.graal.virtual/src/com/oracle/graal/virtual/phases/ea/BlockState.java graal/com.oracle.graal.virtual/src/com/oracle/graal/virtual/phases/ea/ObjectState.java graal/com.oracle.graal.virtual/src/com/oracle/graal/virtual/phases/ea/PartialEscapeClosure.java
diffstat 3 files changed, 5 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.virtual/src/com/oracle/graal/virtual/phases/ea/BlockState.java	Wed Oct 31 08:20:42 2012 +0100
+++ b/graal/com.oracle.graal.virtual/src/com/oracle/graal/virtual/phases/ea/BlockState.java	Wed Oct 31 10:33:01 2012 +0100
@@ -97,7 +97,7 @@
         for (int i = 0; i < fieldState.length; i++) {
             ObjectState valueObj = objectState(fieldState[i]);
             if (valueObj != null) {
-                if (valueObj.getMaterializedValue() == null) {
+                if (valueObj.isVirtual()) {
                     materializeChangedBefore(fixed, valueObj.virtual, deferred, deferredStores, materializeEffects);
                 }
                 if (deferred.contains(valueObj.virtual)) {
--- a/graal/com.oracle.graal.virtual/src/com/oracle/graal/virtual/phases/ea/ObjectState.java	Wed Oct 31 08:20:42 2012 +0100
+++ b/graal/com.oracle.graal.virtual/src/com/oracle/graal/virtual/phases/ea/ObjectState.java	Wed Oct 31 10:33:01 2012 +0100
@@ -98,7 +98,6 @@
     }
 
     public int getLockCount() {
-        assert isVirtual();
         return lockCount;
     }
 
--- a/graal/com.oracle.graal.virtual/src/com/oracle/graal/virtual/phases/ea/PartialEscapeClosure.java	Wed Oct 31 08:20:42 2012 +0100
+++ b/graal/com.oracle.graal.virtual/src/com/oracle/graal/virtual/phases/ea/PartialEscapeClosure.java	Wed Oct 31 10:33:01 2012 +0100
@@ -487,8 +487,9 @@
                 ObjectState resultState = newState.objectStateOptional(object);
                 if (resultState == null || resultState.isVirtual()) {
                     int virtual = 0;
-                    int lockCount = states.get(0).objectState(object).getLockCount();
-                    ValueNode singleValue = states.get(0).objectState(object).getMaterializedValue();
+                    ObjectState startObj = states.get(0).objectState(object);
+                    int lockCount = startObj.getLockCount();
+                    ValueNode singleValue = startObj.isVirtual() ? null : startObj.getMaterializedValue();
                     for (BlockState state : states) {
                         ObjectState obj = state.objectState(object);
                         if (obj.isVirtual()) {
@@ -519,7 +520,7 @@
                         }
                     } else {
                         assert virtual == states.size();
-                        ValueNode[] values = states.get(0).objectState(object).getEntries().clone();
+                        ValueNode[] values = startObj.getEntries().clone();
                         PhiNode[] phis = new PhiNode[values.length];
                         int mismatch = 0;
                         for (int i = 1; i < states.size(); i++) {