changeset 18768:c16786645355

Split negated short-circuit-or guard into two guards
author Andreas Woess <andreas.woess@jku.at>
date Tue, 30 Dec 2014 14:52:38 +0100
parents 7ff41ad072ef
children 144fba40c979
files graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/FixedGuardNode.java
diffstat 1 files changed, 6 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/FixedGuardNode.java	Tue Dec 30 02:21:15 2014 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/FixedGuardNode.java	Tue Dec 30 14:52:38 2014 +0100
@@ -66,6 +66,12 @@
             }
             this.replaceAtUsages(null);
             graph().removeFixed(this);
+        } else if (condition() instanceof ShortCircuitOrNode) {
+            ShortCircuitOrNode shortCircuitOr = (ShortCircuitOrNode) condition();
+            if (isNegated() && usages().isEmpty()) {
+                graph().addAfterFixed(this, graph().add(FixedGuardNode.create(shortCircuitOr.getY(), getReason(), getAction(), !shortCircuitOr.isYNegated())));
+                graph().replaceFixedWithFixed(this, graph().add(FixedGuardNode.create(shortCircuitOr.getX(), getReason(), getAction(), !shortCircuitOr.isXNegated())));
+            }
         }
     }