Mercurial > hg > graal-compiler
changeset 21368:d256b81b6335
Optimize assumption-free checks when compiling without optimistic optimizations
author | Christian Wimmer <christian.wimmer@oracle.com> |
---|---|
date | Thu, 14 May 2015 15:54:45 -0700 |
parents | c9744d2095e0 |
children | 5aeab26703cb |
files | graal/com.oracle.graal.api.meta/src/com/oracle/graal/api/meta/Assumptions.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/RegisterFinalizerNode.java |
diffstat | 2 files changed, 11 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- 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<T> 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);
--- 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<Boolean> 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; }