changeset 7728:77c86cf33685

remove unnecessary virtualId from VirtualObjectNodes
author Lukas Stadler <lukas.stadler@jku.at>
date Tue, 05 Feb 2013 17:41:15 +0100
parents be7b98533b17
children 926635ea20ce
files graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/NewArrayNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/NewInstanceNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/spi/VirtualizerTool.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/virtual/BoxedVirtualObjectNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/virtual/VirtualArrayNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/virtual/VirtualInstanceNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/virtual/VirtualObjectNode.java graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/BoxingEliminationPhase.java graal/com.oracle.graal.virtual/src/com/oracle/graal/virtual/phases/ea/GraphEffectList.java graal/com.oracle.graal.virtual/src/com/oracle/graal/virtual/phases/ea/PartialEscapeAnalysisPhase.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 12 files changed, 18 insertions(+), 36 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/NewArrayNode.java	Tue Feb 05 16:39:45 2013 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/NewArrayNode.java	Tue Feb 05 17:41:15 2013 +0100
@@ -124,7 +124,7 @@
                 for (int i = 0; i < constantLength; i++) {
                     state[i] = defaultForKind;
                 }
-                VirtualObjectNode virtualObject = new VirtualArrayNode(tool.getNextVirtualId(), elementType, constantLength);
+                VirtualObjectNode virtualObject = new VirtualArrayNode(elementType, constantLength);
                 tool.createVirtualObject(virtualObject, state, 0);
                 tool.replaceWithVirtual(virtualObject);
             }
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/NewInstanceNode.java	Tue Feb 05 16:39:45 2013 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/NewInstanceNode.java	Tue Feb 05 17:41:15 2013 +0100
@@ -100,7 +100,7 @@
             for (int i = 0; i < state.length; i++) {
                 state[i] = ConstantNode.defaultForKind(fields[i].getType().getKind(), graph());
             }
-            VirtualObjectNode virtualObject = new VirtualInstanceNode(tool.getNextVirtualId(), instanceClass(), fields);
+            VirtualObjectNode virtualObject = new VirtualInstanceNode(instanceClass(), fields);
             tool.createVirtualObject(virtualObject, state, 0);
             tool.replaceWithVirtual(virtualObject);
         }
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/spi/VirtualizerTool.java	Tue Feb 05 16:39:45 2013 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/spi/VirtualizerTool.java	Tue Feb 05 17:41:15 2013 +0100
@@ -50,11 +50,6 @@
      */
     int getMaximumEntryCount();
 
-    /**
-     * @return the next id for virtual objects (can be used for the VirtualObject constructor).
-     */
-    int getNextVirtualId();
-
     // methods working on virtualized/materialized objects
 
     /**
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/virtual/BoxedVirtualObjectNode.java	Tue Feb 05 16:39:45 2013 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/virtual/BoxedVirtualObjectNode.java	Tue Feb 05 17:41:15 2013 +0100
@@ -33,8 +33,7 @@
     private final ResolvedJavaType type;
     private final Kind kind;
 
-    public BoxedVirtualObjectNode(int virtualId, ResolvedJavaType type, Kind kind, ValueNode unboxedValue) {
-        super(virtualId);
+    public BoxedVirtualObjectNode(ResolvedJavaType type, Kind kind, ValueNode unboxedValue) {
         this.type = type;
         this.kind = kind;
         this.unboxedValue = unboxedValue;
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/virtual/VirtualArrayNode.java	Tue Feb 05 16:39:45 2013 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/virtual/VirtualArrayNode.java	Tue Feb 05 17:41:15 2013 +0100
@@ -34,8 +34,7 @@
     private final ResolvedJavaType componentType;
     private final int length;
 
-    public VirtualArrayNode(long virtualId, ResolvedJavaType componentType, int length) {
-        super(virtualId);
+    public VirtualArrayNode(ResolvedJavaType componentType, int length) {
         this.componentType = componentType;
         this.length = length;
     }
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/virtual/VirtualInstanceNode.java	Tue Feb 05 16:39:45 2013 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/virtual/VirtualInstanceNode.java	Tue Feb 05 17:41:15 2013 +0100
@@ -34,8 +34,7 @@
     private final ResolvedJavaField[] fields;
     private final HashMap<ResolvedJavaField, Integer> fieldMap = new HashMap<>();
 
-    public VirtualInstanceNode(long virtualId, ResolvedJavaType type, ResolvedJavaField[] fields) {
-        super(virtualId);
+    public VirtualInstanceNode(ResolvedJavaType type, ResolvedJavaField[] fields) {
         this.type = type;
         this.fields = fields;
         for (int i = 0; i < fields.length; i++) {
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/virtual/VirtualObjectNode.java	Tue Feb 05 16:39:45 2013 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/virtual/VirtualObjectNode.java	Tue Feb 05 17:41:15 2013 +0100
@@ -25,28 +25,20 @@
 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.*;
 
 @NodeInfo(nameTemplate = "VirtualObject {p#type}")
-public abstract class VirtualObjectNode extends FloatingNode implements LIRLowerable {
-
-    private final long virtualId;
+public abstract class VirtualObjectNode extends ValueNode implements LIRLowerable {
 
-    public VirtualObjectNode(long virtualId) {
+    public VirtualObjectNode() {
         super(StampFactory.virtual());
-        this.virtualId = virtualId;
     }
 
     public abstract ResolvedJavaType type();
 
     public abstract int entryCount();
 
-    public long virtualId() {
-        return virtualId;
-    }
-
     @Override
     public void generate(LIRGeneratorTool gen) {
         // nothing to do...
--- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/BoxingEliminationPhase.java	Tue Feb 05 16:39:45 2013 +0100
+++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/BoxingEliminationPhase.java	Tue Feb 05 17:41:15 2013 +0100
@@ -38,7 +38,6 @@
 public class BoxingEliminationPhase extends Phase {
 
     private final MetaAccessProvider metaAccess;
-    private int virtualIds = Integer.MIN_VALUE;
 
     public BoxingEliminationPhase(MetaAccessProvider metaAccess) {
         this.metaAccess = metaAccess;
@@ -113,7 +112,7 @@
         }
     }
 
-    private void tryEliminate(BoxNode boxNode) {
+    private static void tryEliminate(BoxNode boxNode) {
 
         assert boxNode.objectStamp().isExactType();
         virtualizeUsages(boxNode, boxNode.source(), boxNode.objectStamp().type(), boxNode.getSourceKind());
@@ -130,12 +129,12 @@
         ((StructuredGraph) boxNode.graph()).removeFixed(boxNode);
     }
 
-    private void virtualizeUsages(ValueNode boxNode, ValueNode replacement, ResolvedJavaType exactType, Kind sourceKind) {
+    private static void virtualizeUsages(ValueNode boxNode, ValueNode replacement, ResolvedJavaType exactType, Kind sourceKind) {
         ValueNode virtualValueNode = null;
         VirtualObjectNode virtualObjectNode = null;
         for (Node n : boxNode.usages().filter(NodePredicates.isA(VirtualState.class)).snapshot()) {
             if (virtualValueNode == null) {
-                virtualObjectNode = n.graph().unique(new BoxedVirtualObjectNode(virtualIds++, exactType, sourceKind, replacement));
+                virtualObjectNode = n.graph().unique(new BoxedVirtualObjectNode(exactType, sourceKind, replacement));
             }
             n.replaceFirstInput(boxNode, virtualObjectNode);
         }
--- a/graal/com.oracle.graal.virtual/src/com/oracle/graal/virtual/phases/ea/GraphEffectList.java	Tue Feb 05 16:39:45 2013 +0100
+++ b/graal/com.oracle.graal.virtual/src/com/oracle/graal/virtual/phases/ea/GraphEffectList.java	Tue Feb 05 17:41:15 2013 +0100
@@ -62,7 +62,7 @@
      * 
      * @param node The floating node to be added.
      */
-    public void addFloatingNode(final FloatingNode node) {
+    public void addFloatingNode(final ValueNode node) {
         add(new Effect() {
 
             @Override
--- a/graal/com.oracle.graal.virtual/src/com/oracle/graal/virtual/phases/ea/PartialEscapeAnalysisPhase.java	Tue Feb 05 16:39:45 2013 +0100
+++ b/graal/com.oracle.graal.virtual/src/com/oracle/graal/virtual/phases/ea/PartialEscapeAnalysisPhase.java	Tue Feb 05 17:41:15 2013 +0100
@@ -95,7 +95,7 @@
                     PartialEscapeClosure closure = new PartialEscapeClosure(graph.createNodeBitMap(), schedule, runtime);
                     ReentrantBlockIterator.apply(closure, schedule.getCFG().getStartBlock(), new BlockState(), null);
 
-                    if (closure.getVirtualIdCount() == 0) {
+                    if (closure.getNewVirtualObjectCount() == 0) {
                         return false;
                     }
 
--- a/graal/com.oracle.graal.virtual/src/com/oracle/graal/virtual/phases/ea/PartialEscapeClosure.java	Tue Feb 05 16:39:45 2013 +0100
+++ b/graal/com.oracle.graal.virtual/src/com/oracle/graal/virtual/phases/ea/PartialEscapeClosure.java	Tue Feb 05 17:41:15 2013 +0100
@@ -69,8 +69,8 @@
         return effects;
     }
 
-    public int getVirtualIdCount() {
-        return tool.getNextVirtualId();
+    public int getNewVirtualObjectCount() {
+        return tool.getNewVirtualObjectCount();
     }
 
     @Override
--- a/graal/com.oracle.graal.virtual/src/com/oracle/graal/virtual/phases/ea/VirtualizerToolImpl.java	Tue Feb 05 16:39:45 2013 +0100
+++ b/graal/com.oracle.graal.virtual/src/com/oracle/graal/virtual/phases/ea/VirtualizerToolImpl.java	Tue Feb 05 17:41:15 2013 +0100
@@ -49,7 +49,7 @@
     private boolean customAction;
     private BlockState state;
     private ValueNode current;
-    private int virtualIds = 0;
+    private int newVirtualObjectCount = 0;
 
     @Override
     public MetaAccessProvider getMetaAccessProvider() {
@@ -71,9 +71,8 @@
         return customAction;
     }
 
-    @Override
-    public int getNextVirtualId() {
-        return virtualIds;
+    public int getNewVirtualObjectCount() {
+        return newVirtualObjectCount;
     }
 
     @Override
@@ -156,7 +155,7 @@
         state.addObject(virtualObject, new ObjectState(virtualObject, entryState, EscapeState.Virtual, lockCount));
         state.addAndMarkAlias(virtualObject, virtualObject, usages);
         PartialEscapeClosure.METRIC_ALLOCATION_REMOVED.increment();
-        virtualIds++;
+        newVirtualObjectCount++;
     }
 
     @Override