Mercurial > hg > truffle
diff graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/node/NodeCodeGenerator.java @ 11442:2868b55001d4
Truffle-DSL: fixed specializationg grouping failed with guards using base types.
author | Christian Humer <christian.humer@gmail.com> |
---|---|
date | Wed, 28 Aug 2013 01:45:13 +0200 |
parents | efe58aa92f86 |
children | b33783cbd8ce |
line wrap: on
line diff
--- a/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/node/NodeCodeGenerator.java Tue Aug 27 23:06:24 2013 +0200 +++ b/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/node/NodeCodeGenerator.java Wed Aug 28 01:45:13 2013 +0200 @@ -1545,7 +1545,7 @@ return true; } SpecializationGroup previous = group.getPreviousGroup(); - if (previous == null || previous.getElseConnectableGuard() == null) { + if (previous == null || previous.getElseConnectableGuards().isEmpty()) { return true; } @@ -1571,7 +1571,7 @@ String guardsAnd = ""; String guardsCastAnd = ""; - GuardData elseGuard = group.getElseConnectableGuard(); + List<GuardData> elseGuards = group.getElseConnectableGuards(); boolean minimumState = checkMinimumState; if (minimumState) { @@ -1643,7 +1643,7 @@ } for (GuardData guard : group.getGuards()) { - if (elseGuard == guard) { + if (elseGuards.contains(guard)) { continue; } @@ -1656,17 +1656,17 @@ } } - int ifCount = startGuardIf(builder, guardsBuilder, 0, elseGuard); + int ifCount = startGuardIf(builder, guardsBuilder, 0, elseGuards); builder.tree(castBuilder.getRoot()); - ifCount = startGuardIf(builder, guardsCastBuilder, ifCount, elseGuard); + ifCount = startGuardIf(builder, guardsCastBuilder, ifCount, elseGuards); return ifCount; } - private int startGuardIf(CodeTreeBuilder builder, CodeTreeBuilder conditionBuilder, int ifCount, GuardData elseGuard) { + private int startGuardIf(CodeTreeBuilder builder, CodeTreeBuilder conditionBuilder, int ifCount, List<GuardData> elseGuard) { int newIfCount = ifCount; if (!conditionBuilder.isEmpty()) { - if (ifCount == 0 && elseGuard != null) { + if (ifCount == 0 && !elseGuard.isEmpty()) { builder.startElseIf(); } else { builder.startIf(); @@ -1674,7 +1674,7 @@ builder.tree(conditionBuilder.getRoot()); builder.end().startBlock(); newIfCount++; - } else if (ifCount == 0 && elseGuard != null) { + } else if (ifCount == 0 && !elseGuard.isEmpty()) { builder.startElseBlock(); newIfCount++; }