| Index: pkg/compiler/lib/src/ssa/builder.dart
|
| diff --git a/pkg/compiler/lib/src/ssa/builder.dart b/pkg/compiler/lib/src/ssa/builder.dart
|
| index 4a2f3e0de7ed64455e5387e51c9ff41b48e6a96d..9753787f7110b16d77dc54d53d526b9ebcd3a39d 100644
|
| --- a/pkg/compiler/lib/src/ssa/builder.dart
|
| +++ b/pkg/compiler/lib/src/ssa/builder.dart
|
| @@ -2589,6 +2589,31 @@ class SsaBuilder extends ast.Visitor
|
| return pop();
|
| }
|
|
|
| + visitAssert(ast.Assert node) {
|
| + if (!compiler.enableUserAssertions) return;
|
| +
|
| + void buildCondition() {
|
| + visit(node.condition);
|
| + var arguments = [pop()];
|
| + pushInvokeStatic(node, backend.assertConditionHelperMethod, arguments);
|
| + }
|
| + void fail() {
|
| + var arguments = new List();
|
| + if (node.message != null) {
|
| + visit(node.message);
|
| + arguments.add(pop());
|
| + } else {
|
| + arguments.add(graph.addConstantNull(compiler));
|
| + }
|
| + pushInvokeStatic(node, backend.assertThrowMethod, arguments);
|
| + pop();
|
| + }
|
| + handleIf(node,
|
| + visitCondition: buildCondition,
|
| + visitThen: () {},
|
| + visitElse: fail);
|
| + }
|
| +
|
| visitBlock(ast.Block node) {
|
| assert(!isAborted());
|
| if (!isReachable) return; // This can only happen when inlining.
|
| @@ -5162,18 +5187,6 @@ class SsaBuilder extends ast.Visitor
|
| return false;
|
| }
|
|
|
| - @override
|
| - visitAssert(ast.Send node, ast.Node expression, _) {
|
| - if (!compiler.enableUserAssertions) {
|
| - stack.add(graph.addConstantNull(compiler));
|
| - return;
|
| - }
|
| - assert(invariant(node, node.arguments.tail.isEmpty,
|
| - message: "Invalid assertion: $node"));
|
| - generateStaticFunctionInvoke(
|
| - node, backend.assertMethod, CallStructure.ONE_ARG);
|
| - }
|
| -
|
| visitStaticSend(ast.Send node) {
|
| internalError(node, "Unexpected visitStaticSend");
|
| }
|
| @@ -8231,14 +8244,6 @@ class SsaBuilder extends ast.Visitor
|
| }
|
|
|
| @override
|
| - void errorInvalidAssert(
|
| - ast.Send node,
|
| - ast.NodeList arguments,
|
| - _) {
|
| - visitNode(node);
|
| - }
|
| -
|
| - @override
|
| void errorUndefinedBinaryExpression(
|
| ast.Send node,
|
| ast.Node left,
|
|
|