changeset 7021:cc72b8b5edca

let VirtualObjectNodes react to materialization
author Lukas Stadler <lukas.stadler@jku.at>
date Fri, 23 Nov 2012 15:01:37 +0100
parents 7e12f1d11a5d
children 231cfb5490d3
files graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/virtual/VirtualObjectNode.java graal/com.oracle.graal.virtual/src/com/oracle/graal/virtual/phases/ea/BlockState.java
diffstat 2 files changed, 6 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/virtual/VirtualObjectNode.java	Fri Nov 23 14:01:02 2012 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/virtual/VirtualObjectNode.java	Fri Nov 23 15:01:37 2012 +0100
@@ -24,6 +24,7 @@
 
 import com.oracle.graal.api.meta.*;
 import com.oracle.graal.graph.*;
+import com.oracle.graal.nodes.*;
 import com.oracle.graal.nodes.calc.*;
 import com.oracle.graal.nodes.spi.*;
 import com.oracle.graal.nodes.type.*;
@@ -52,4 +53,8 @@
     }
 
     public abstract Object fieldName(int i);
+
+    public void materializeAt(@SuppressWarnings("unused") FixedNode fixed) {
+        // nothing to do in here - this method allows subclasses to respond to materialization
+    }
 }
--- a/graal/com.oracle.graal.virtual/src/com/oracle/graal/virtual/phases/ea/BlockState.java	Fri Nov 23 14:01:02 2012 +0100
+++ b/graal/com.oracle.graal.virtual/src/com/oracle/graal/virtual/phases/ea/BlockState.java	Fri Nov 23 15:01:37 2012 +0100
@@ -119,6 +119,7 @@
             materializeEffects.addFixedNodeBefore(newObject, fixed);
         } else {
             // some entries are not default constants - do the materialization
+            virtual.materializeAt(fixed);
             MaterializeObjectNode materialize = new MaterializeObjectNode(virtual, obj.getLockCount());
             ValueNode[] values = new ValueNode[obj.getEntries().length];
             materialize.setProbability(fixed.probability());