changeset 23205:aed0201715a1

Enhance stamp non negative array length after successful NewArray allocation
author Stefan Anzinger <stefan.anzinger@oracle.com>
date Fri, 18 Dec 2015 15:30:22 +0100
parents 361dac149aa6
children c68ee5639632
files graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/DefaultJavaLoweringProvider.java
diffstat 1 files changed, 4 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/DefaultJavaLoweringProvider.java	Fri Dec 18 12:20:08 2015 +0100
+++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/DefaultJavaLoweringProvider.java	Fri Dec 18 15:30:22 2015 +0100
@@ -84,6 +84,7 @@
 import com.oracle.graal.nodes.extended.UnboxNode;
 import com.oracle.graal.nodes.extended.UnsafeLoadNode;
 import com.oracle.graal.nodes.extended.UnsafeStoreNode;
+import com.oracle.graal.nodes.java.AbstractNewArrayNode;
 import com.oracle.graal.nodes.java.AbstractNewObjectNode;
 import com.oracle.graal.nodes.java.AccessIndexedNode;
 import com.oracle.graal.nodes.java.ArrayLengthNode;
@@ -791,6 +792,9 @@
             readArrayLength.setGuard(nullCheck);
             arrayLength = readArrayLength;
         } else {
+            if (array instanceof AbstractNewArrayNode) {
+                arrayLength = n.graph().addOrUnique(new PiNode(arrayLength, StampFactory.positiveInt()));
+            }
             arrayLength = arrayLength.isAlive() ? arrayLength : graph.addOrUniqueWithInputs(arrayLength);
         }