Mercurial > hg > graal-compiler
changeset 13723:1834ae0bc965
GuardLowering: do not use trapping accesses for guards with a speculation
author | Gilles Duboscq <duboscq@ssw.jku.at> |
---|---|
date | Tue, 21 Jan 2014 18:35:46 +0100 |
parents | 2d4a8d3d286b |
children | 256bc461645e |
files | graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/GuardLoweringPhase.java |
diffstat | 1 files changed, 2 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/GuardLoweringPhase.java Tue Jan 21 18:35:03 2014 +0100 +++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/GuardLoweringPhase.java Tue Jan 21 18:35:46 2014 +0100 @@ -27,6 +27,7 @@ import java.util.*; import java.util.Map.Entry; +import com.oracle.graal.api.meta.*; import com.oracle.graal.debug.*; import com.oracle.graal.graph.*; import com.oracle.graal.nodes.*; @@ -107,7 +108,7 @@ private void processGuard(Node node) { GuardNode guard = (GuardNode) node; - if (guard.negated() && guard.condition() instanceof IsNullNode) { + if (guard.negated() && guard.condition() instanceof IsNullNode && (guard.getSpeculation() == null || guard.getSpeculation().equals(Constant.NULL_OBJECT))) { ValueNode obj = ((IsNullNode) guard.condition()).object(); nullGuarded.put(obj, guard); }