changeset 21931:40aff2bb1880

Preserve stateBefore when creating newInstanceNode and newArrayNode during canonicalization
author Christian Wimmer <christian.wimmer@oracle.com>
date Thu, 11 Jun 2015 20:40:11 -0700
parents b09503284ac8
children ba3759462502
files graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/AbstractNewArrayNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/AbstractNewObjectNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/DynamicNewArrayNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/DynamicNewInstanceNode.java 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
diffstat 6 files changed, 26 insertions(+), 18 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/AbstractNewArrayNode.java	Thu Jun 11 16:20:13 2015 -0700
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/AbstractNewArrayNode.java	Thu Jun 11 20:40:11 2015 -0700
@@ -43,8 +43,8 @@
         return length;
     }
 
-    public AbstractNewArrayNode(NodeClass<? extends AbstractNewArrayNode> c, Stamp stamp, ValueNode length, boolean fillContents) {
-        super(c, stamp, fillContents);
+    protected AbstractNewArrayNode(NodeClass<? extends AbstractNewArrayNode> c, Stamp stamp, ValueNode length, boolean fillContents, FrameState stateBefore) {
+        super(c, stamp, fillContents, stateBefore);
         this.length = length;
     }
 
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/AbstractNewObjectNode.java	Thu Jun 11 16:20:13 2015 -0700
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/AbstractNewObjectNode.java	Thu Jun 11 20:40:11 2015 -0700
@@ -43,8 +43,8 @@
     public static final NodeClass<AbstractNewObjectNode> TYPE = NodeClass.create(AbstractNewObjectNode.class);
     protected final boolean fillContents;
 
-    public AbstractNewObjectNode(NodeClass<? extends AbstractNewObjectNode> c, Stamp stamp, boolean fillContents) {
-        super(c, stamp);
+    protected AbstractNewObjectNode(NodeClass<? extends AbstractNewObjectNode> c, Stamp stamp, boolean fillContents, FrameState stateBefore) {
+        super(c, stamp, stateBefore);
         this.fillContents = fillContents;
     }
 
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/DynamicNewArrayNode.java	Thu Jun 11 16:20:13 2015 -0700
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/DynamicNewArrayNode.java	Thu Jun 11 20:40:11 2015 -0700
@@ -47,11 +47,11 @@
     protected final Kind knownElementKind;
 
     public DynamicNewArrayNode(ValueNode elementType, ValueNode length, boolean fillContents, Kind knownElementKind) {
-        this(TYPE, elementType, length, fillContents, knownElementKind);
+        this(TYPE, elementType, length, fillContents, knownElementKind, null);
     }
 
-    protected DynamicNewArrayNode(NodeClass<? extends DynamicNewArrayNode> c, ValueNode elementType, ValueNode length, boolean fillContents, Kind knownElementKind) {
-        super(c, StampFactory.objectNonNull(), length, fillContents);
+    protected DynamicNewArrayNode(NodeClass<? extends DynamicNewArrayNode> c, ValueNode elementType, ValueNode length, boolean fillContents, Kind knownElementKind, FrameState stateBefore) {
+        super(c, StampFactory.objectNonNull(), length, fillContents, stateBefore);
         this.elementType = elementType;
         this.knownElementKind = knownElementKind;
         assert knownElementKind != Kind.Void && knownElementKind != Kind.Illegal;
@@ -87,7 +87,7 @@
 
     /** Hook for subclasses to instantiate a subclass of {@link NewArrayNode}. */
     protected NewArrayNode createNewArrayNode(ResolvedJavaType type) {
-        return new NewArrayNode(type, length(), fillContents());
+        return new NewArrayNode(type, length(), fillContents(), stateBefore());
     }
 
     public static boolean throwsIllegalArgumentException(Class<?> elementType) {
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/DynamicNewInstanceNode.java	Thu Jun 11 16:20:13 2015 -0700
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/DynamicNewInstanceNode.java	Thu Jun 11 20:40:11 2015 -0700
@@ -38,11 +38,11 @@
     @Input ValueNode clazz;
 
     public DynamicNewInstanceNode(ValueNode clazz, boolean fillContents) {
-        this(TYPE, clazz, fillContents);
+        this(TYPE, clazz, fillContents, null);
     }
 
-    protected DynamicNewInstanceNode(NodeClass<? extends DynamicNewInstanceNode> c, ValueNode clazz, boolean fillContents) {
-        super(c, StampFactory.objectNonNull(), fillContents);
+    protected DynamicNewInstanceNode(NodeClass<? extends DynamicNewInstanceNode> c, ValueNode clazz, boolean fillContents, FrameState stateBefore) {
+        super(c, StampFactory.objectNonNull(), fillContents, stateBefore);
         this.clazz = clazz;
     }
 
@@ -71,7 +71,7 @@
 
     /** Hook for subclasses to instantiate a subclass of {@link NewInstanceNode}. */
     protected NewInstanceNode createNewInstanceNode(ResolvedJavaType type) {
-        return new NewInstanceNode(type, fillContents());
+        return new NewInstanceNode(type, fillContents(), stateBefore());
     }
 
     public static boolean throwsInstantiationException(Class<?> type) {
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/NewArrayNode.java	Thu Jun 11 16:20:13 2015 -0700
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/NewArrayNode.java	Thu Jun 11 20:40:11 2015 -0700
@@ -44,11 +44,15 @@
     public static final NodeClass<NewArrayNode> TYPE = NodeClass.create(NewArrayNode.class);
 
     public NewArrayNode(ResolvedJavaType elementType, ValueNode length, boolean fillContents) {
-        super(TYPE, StampFactory.exactNonNull(elementType.getArrayClass()), length, fillContents);
+        this(elementType, length, fillContents, null);
     }
 
-    protected NewArrayNode(NodeClass<? extends NewArrayNode> c, ResolvedJavaType elementType, ValueNode length, boolean fillContents) {
-        super(c, StampFactory.exactNonNull(elementType.getArrayClass()), length, fillContents);
+    public NewArrayNode(ResolvedJavaType elementType, ValueNode length, boolean fillContents, FrameState stateBefore) {
+        this(TYPE, elementType, length, fillContents, stateBefore);
+    }
+
+    protected NewArrayNode(NodeClass<? extends NewArrayNode> c, ResolvedJavaType elementType, ValueNode length, boolean fillContents, FrameState stateBefore) {
+        super(c, StampFactory.exactNonNull(elementType.getArrayClass()), length, fillContents, stateBefore);
     }
 
     @NodeIntrinsic
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/NewInstanceNode.java	Thu Jun 11 16:20:13 2015 -0700
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/NewInstanceNode.java	Thu Jun 11 20:40:11 2015 -0700
@@ -43,11 +43,15 @@
     protected final ResolvedJavaType instanceClass;
 
     public NewInstanceNode(ResolvedJavaType type, boolean fillContents) {
-        this(TYPE, type, fillContents);
+        this(TYPE, type, fillContents, null);
     }
 
-    protected NewInstanceNode(NodeClass<? extends NewInstanceNode> c, ResolvedJavaType type, boolean fillContents) {
-        super(c, StampFactory.exactNonNull(type), fillContents);
+    public NewInstanceNode(ResolvedJavaType type, boolean fillContents, FrameState stateBefore) {
+        this(TYPE, type, fillContents, stateBefore);
+    }
+
+    protected NewInstanceNode(NodeClass<? extends NewInstanceNode> c, ResolvedJavaType type, boolean fillContents, FrameState stateBefore) {
+        super(c, StampFactory.exactNonNull(type), fillContents, stateBefore);
         assert !type.isArray() && !type.isInterface() && !type.isPrimitive();
         this.instanceClass = type;
     }