changeset 22645:cf8a2c999270

Allow PartialEscapePhase to be reused for PEA selective inlining
author Paul Woegerer <paul.woegerer@oracle.com>
date Wed, 16 Sep 2015 15:43:24 +0200
parents 54257f3273df
children 05183a084a08
files graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/spi/VirtualizerTool.java graal/com.oracle.graal.virtual/src/com/oracle/graal/virtual/phases/ea/PartialEscapeClosure.java graal/com.oracle.graal.virtual/src/com/oracle/graal/virtual/phases/ea/VirtualizerToolImpl.java
diffstat 3 files changed, 13 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/spi/VirtualizerTool.java	Wed Sep 16 14:42:30 2015 +0200
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/spi/VirtualizerTool.java	Wed Sep 16 15:43:24 2015 +0200
@@ -145,4 +145,11 @@
      */
     void replaceWith(ValueNode value);
 
+    /**
+     *
+     * If state is virtual, materialization is performed for the given state.
+     *
+     * @return true if materialization happened, false if not.
+     */
+    boolean ensureMaterialized(VirtualObjectNode virtualObject);
 }
--- a/graal/com.oracle.graal.virtual/src/com/oracle/graal/virtual/phases/ea/PartialEscapeClosure.java	Wed Sep 16 14:42:30 2015 +0200
+++ b/graal/com.oracle.graal.virtual/src/com/oracle/graal/virtual/phases/ea/PartialEscapeClosure.java	Wed Sep 16 15:43:24 2015 +0200
@@ -340,7 +340,7 @@
     /**
      * @return true if materialization happened, false if not.
      */
-    private boolean ensureMaterialized(PartialEscapeBlockState<?> state, int object, FixedNode materializeBefore, GraphEffectList effects, DebugMetric metric) {
+    protected boolean ensureMaterialized(PartialEscapeBlockState<?> state, int object, FixedNode materializeBefore, GraphEffectList effects, DebugMetric metric) {
         if (state.getObjectState(object).isVirtual()) {
             metric.increment();
             VirtualObjectNode virtual = virtualObjects.get(object);
--- a/graal/com.oracle.graal.virtual/src/com/oracle/graal/virtual/phases/ea/VirtualizerToolImpl.java	Wed Sep 16 14:42:30 2015 +0200
+++ b/graal/com.oracle.graal.virtual/src/com/oracle/graal/virtual/phases/ea/VirtualizerToolImpl.java	Wed Sep 16 15:43:24 2015 +0200
@@ -180,6 +180,11 @@
         }
     }
 
+    @Override
+    public boolean ensureMaterialized(VirtualObjectNode virtualObject) {
+        return closure.ensureMaterialized(state, virtualObject.getObjectId(), position, effects, PartialEscapeClosure.METRIC_MATERIALIZATIONS_UNHANDLED);
+    }
+
     public void addLock(VirtualObjectNode virtualObject, MonitorIdNode monitorId) {
         int id = virtualObject.getObjectId();
         state.addLock(id, monitorId);