Chromium Code Reviews| Index: pkg/compiler/lib/src/js_backend/codegen/codegen.dart |
| diff --git a/pkg/compiler/lib/src/js_backend/codegen/codegen.dart b/pkg/compiler/lib/src/js_backend/codegen/codegen.dart |
| index bcf09683b88188eb9cd796c250bc132d3264e51d..a244edab913613caab31e8e6968ae3bc084ac137 100644 |
| --- a/pkg/compiler/lib/src/js_backend/codegen/codegen.dart |
| +++ b/pkg/compiler/lib/src/js_backend/codegen/codegen.dart |
| @@ -533,9 +533,14 @@ class CodeGenerator extends tree_ir.StatementVisitor |
| @override |
| void visitExpressionStatement(tree_ir.ExpressionStatement node) { |
| - accumulator.add(new js.ExpressionStatement( |
| - visitExpression(node.expression))); |
| - visitStatement(node.next); |
| + js.Expression exp = visitExpression(node.expression); |
| + if (node.next is tree_ir.Unreachable) { |
|
sra1
2015/11/30 18:59:40
Can we tell if the unreachable code is not conditi
asgerf
2015/12/01 12:40:20
The easy fix was to look at the fallthrough stack,
|
| + // Emit as 'return exp' to assist local analysis in the VM. |
| + accumulator.add(new js.Return(exp)); |
| + } else { |
| + accumulator.add(new js.ExpressionStatement(exp)); |
| + visitStatement(node.next); |
| + } |
| } |
| @override |
| @@ -682,8 +687,8 @@ class CodeGenerator extends tree_ir.StatementVisitor |
| @override |
| void visitUnreachable(tree_ir.Unreachable node) { |
| - // Output nothing. |
| - // TODO(asgerf): Emit a throw/return to assist local analysis in the VM? |
| + // Emit a return to assist local analysis in the VM. |
| + accumulator.add(new js.Return()); |
| } |
| @override |