diff graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/node/SpecializationGroup.java @ 11507:d6a5ab791b0d

Truffle-DSL: fixed a bug in grouping of abstract guards.
author Christian Humer <christian.humer@gmail.com>
date Mon, 02 Sep 2013 15:22:25 +0200
parents a317acdd5f2c
children 85dcc7f59c34
line wrap: on
line diff
--- a/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/node/SpecializationGroup.java	Fri Aug 30 17:45:53 2013 +0200
+++ b/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/node/SpecializationGroup.java	Mon Sep 02 15:22:25 2013 +0200
@@ -119,6 +119,11 @@
         if (previous == null || previous.getGuards().size() != elseConnectedGuards.size() + 1) {
             return null;
         }
+
+        if (elseConnectedGuards.contains(guard)) {
+            return guard;
+        }
+
         GuardData previousGuard = previous.getGuards().get(elseConnectedGuards.size());
         if (guard.getMethod().equals(previousGuard.getMethod()) && guard.isNegated() != previousGuard.isNegated()) {
             return guard;
@@ -212,7 +217,7 @@
             int signatureIndex = 0;
             for (ActualParameter parameter : guardMatch.getParameters()) {
                 signatureIndex++;
-                if (parameter.getSpecification().isSignature()) {
+                if (!parameter.getSpecification().isSignature()) {
                     continue;
                 }