Mercurial > hg > graal-compiler
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); }