From 3cd331cbb66add2c564439a4e604872f073d4946 Mon Sep 17 00:00:00 2001 From: Asger Feldthaus Date: Mon, 28 Sep 2015 11:14:28 +0200 Subject: [PATCH] dart2js cps: Logical rewriter should treat Throw as a terminator. Because of this bug, the tree IR had a tendency to put throw statements at the bottom of a method, even if it meant inserting an explicit negation in a branch. BUG= R=sra@google.com Review URL: https://codereview.chromium.org//1368963002 . --- .../lib/src/tree_ir/optimization/logical_rewriter.dart | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pkg/compiler/lib/src/tree_ir/optimization/logical_rewriter.dart b/pkg/compiler/lib/src/tree_ir/optimization/logical_rewriter.dart index e4483f23f9b..bc49dc750fd 100644 --- a/pkg/compiler/lib/src/tree_ir/optimization/logical_rewriter.dart +++ b/pkg/compiler/lib/src/tree_ir/optimization/logical_rewriter.dart @@ -95,7 +95,8 @@ class LogicalRewriter extends RecursiveTransformer bool isTerminator(Statement node) { return (node is Jump || node is Return) && !isFallthrough(node) || - (node is ExpressionStatement && node.next is Unreachable); + (node is ExpressionStatement && node.next is Unreachable) || + node is Throw; } Statement visitIf(If node) {