# HG changeset patch # User Christian Wimmer # Date 1431644085 25200 # Node ID d256b81b633564a4c4cc4f59a1b37de4df298605 # Parent c9744d2095e0395f1dc482b7dc44eb9e52903c22 Optimize assumption-free checks when compiling without optimistic optimizations diff -r c9744d2095e0 -r d256b81b6335 graal/com.oracle.graal.api.meta/src/com/oracle/graal/api/meta/Assumptions.java --- a/graal/com.oracle.graal.api.meta/src/com/oracle/graal/api/meta/Assumptions.java Thu May 14 15:52:46 2015 -0700 +++ b/graal/com.oracle.graal.api.meta/src/com/oracle/graal/api/meta/Assumptions.java Thu May 14 15:54:45 2015 -0700 @@ -68,6 +68,10 @@ return result; } + public boolean isAssumptionFree() { + return assumptions.length == 0; + } + public void add(AssumptionResult other) { Assumption[] newAssumptions = Arrays.copyOf(this.assumptions, this.assumptions.length + other.assumptions.length); System.arraycopy(other.assumptions, 0, newAssumptions, this.assumptions.length, other.assumptions.length); diff -r c9744d2095e0 -r d256b81b6335 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/RegisterFinalizerNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/RegisterFinalizerNode.java Thu May 14 15:52:46 2015 -0700 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/RegisterFinalizerNode.java Thu May 14 15:54:45 2015 -0700 @@ -68,10 +68,14 @@ ObjectStamp objectStamp = (ObjectStamp) object.stamp(); if (objectStamp.isExactType()) { return objectStamp.type().hasFinalizer(); - } else if (objectStamp.type() != null && assumptions != null) { + } else if (objectStamp.type() != null) { AssumptionResult result = objectStamp.type().hasFinalizableSubclass(); - assumptions.record(result); - return result.getResult(); + if (result.isAssumptionFree()) { + return result.getResult(); + } else if (assumptions != null) { + assumptions.record(result); + return result.getResult(); + } } return true; }