Mercurial > hg > graal-jvmci-8
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; }