| Index: lib/compiler/implementation/ssa/bailout.dart
|
| diff --git a/lib/compiler/implementation/ssa/bailout.dart b/lib/compiler/implementation/ssa/bailout.dart
|
| index 1a4513ed5796010e3f3d30579a993a910fa0de2d..0b1ce7e41b5fe0453039ecfe6cb89b8524fa3955 100644
|
| --- a/lib/compiler/implementation/ssa/bailout.dart
|
| +++ b/lib/compiler/implementation/ssa/bailout.dart
|
| @@ -316,7 +316,7 @@ class SsaBailoutPropagator extends HBaseVisitor {
|
| if (block.isLoopHeader()) {
|
| blocks.addLast(block);
|
| } else if (block.isLabeledBlock() && blocks.last() !== block) {
|
| - HLabeledBlockInformation info = block.blockInformation;
|
| + HLabeledBlockInformation info = block.blockInformation.body;
|
| visitStatements(info.body);
|
| return;
|
| }
|
| @@ -344,16 +344,16 @@ class SsaBailoutPropagator extends HBaseVisitor {
|
| subGraph = oldSubGraph;
|
|
|
| if (start.isLabeledBlock()) {
|
| - HLabeledBlockInformation info = start.blockInformation;
|
| - if (info.joinBlock !== null) {
|
| - visitBasicBlock(info.joinBlock);
|
| + HBasicBlock continuation = start.blockInformation.continuation;
|
| + if (continuation !== null) {
|
| + visitBasicBlock(continuation);
|
| }
|
| }
|
| }
|
|
|
| void visitIf(HIf instruction) {
|
| int preVisitedBlocks = 0;
|
| - HIfBlockInformation info = instruction.blockInformation;
|
| + HIfBlockInformation info = instruction.blockInformation.body;
|
| visitStatements(info.thenGraph);
|
| preVisitedBlocks++;
|
| if (instruction.hasElse) {
|
| @@ -361,12 +361,13 @@ class SsaBailoutPropagator extends HBaseVisitor {
|
| preVisitedBlocks++;
|
| }
|
|
|
| - if (info.joinBlock !== null
|
| - && info.joinBlock.dominator !== instruction.block) {
|
| + HBasicBlock joinBlock = instruction.joinBlock;
|
| + if (joinBlock !== null
|
| + && joinBlock.dominator !== instruction.block) {
|
| // The join block is dominated by a block in one of the branches.
|
| // The subgraph traversal never reached it, so we visit it here
|
| // instead.
|
| - visitBasicBlock(info.joinBlock);
|
| + visitBasicBlock(joinBlock);
|
| }
|
|
|
| // Visit all the dominated blocks that are not part of the then or else
|
|
|