changeset 21922:2ee70257c9c4

Don't create IsNull guard for values with a nonNull stamp.
author Roland Schatz <roland.schatz@oracle.com>
date Thu, 11 Jun 2015 16:45:42 +0200
parents 882bfe9a2f9d
children 1b695a36c4d5
files graal/com.oracle.graal.java/src/com/oracle/graal/java/BytecodeParser.java
diffstat 1 files changed, 7 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.java/src/com/oracle/graal/java/BytecodeParser.java	Thu Jun 11 13:19:51 2015 +0200
+++ b/graal/com.oracle.graal.java/src/com/oracle/graal/java/BytecodeParser.java	Thu Jun 11 16:45:42 2015 +0200
@@ -2974,6 +2974,13 @@
     }
 
     private ValueNode appendNullCheck(ValueNode object) {
+        if (object.stamp() instanceof AbstractPointerStamp) {
+            AbstractPointerStamp stamp = (AbstractPointerStamp) object.stamp();
+            if (stamp.nonNull()) {
+                return object;
+            }
+        }
+
         IsNullNode isNull = append(new IsNullNode(object));
         FixedGuardNode fixedGuard = append(new FixedGuardNode(isNull, DeoptimizationReason.NullCheckException, DeoptimizationAction.InvalidateReprofile, true));
         return append(new PiNode(object, object.stamp().join(StampFactory.objectNonNull()), fixedGuard));