| Index: src/parsing/pattern-rewriter.cc
|
| diff --git a/src/parsing/pattern-rewriter.cc b/src/parsing/pattern-rewriter.cc
|
| index 21b1cec69655c092b3c4e822ed3d14dd6987ccb6..f8e38f2d8bc396cc49fe4780ddc6c7824bbdce9c 100644
|
| --- a/src/parsing/pattern-rewriter.cc
|
| +++ b/src/parsing/pattern-rewriter.cc
|
| @@ -114,9 +114,8 @@ void Parser::PatternRewriter::VisitVariableProxy(VariableProxy* pattern) {
|
| // In an assignment context, simply perform the assignment
|
| Assignment* assignment = factory()->NewAssignment(
|
| Token::ASSIGN, pattern, value, pattern->position());
|
| - block_->statements()->Add(
|
| - factory()->NewExpressionStatement(assignment, pattern->position()),
|
| - zone());
|
| + block_->statements()->push_back(
|
| + factory()->NewExpressionStatement(assignment, pattern->position()));
|
| return;
|
| }
|
|
|
| @@ -209,9 +208,8 @@ void Parser::PatternRewriter::VisitVariableProxy(VariableProxy* pattern) {
|
|
|
| CallRuntime* initialize = factory()->NewCallRuntime(
|
| Runtime::kInitializeVarGlobal, arguments, value->position());
|
| - block_->statements()->Add(
|
| - factory()->NewExpressionStatement(initialize, initialize->position()),
|
| - zone());
|
| + block_->statements()->push_back(
|
| + factory()->NewExpressionStatement(initialize, initialize->position()));
|
| } else {
|
| // For 'let' and 'const' declared variables the initialization always
|
| // assigns to the declared variable.
|
| @@ -226,8 +224,8 @@ void Parser::PatternRewriter::VisitVariableProxy(VariableProxy* pattern) {
|
| int pos = IsSubPattern() ? pattern->position() : value->position();
|
| Assignment* assignment =
|
| factory()->NewAssignment(Token::INIT, proxy, value, pos);
|
| - block_->statements()->Add(
|
| - factory()->NewExpressionStatement(assignment, pos), zone());
|
| + block_->statements()->push_back(
|
| + factory()->NewExpressionStatement(assignment, pos));
|
| }
|
| }
|
|
|
| @@ -239,9 +237,8 @@ Variable* Parser::PatternRewriter::CreateTempVar(Expression* value) {
|
| Token::ASSIGN, factory()->NewVariableProxy(temp), value,
|
| kNoSourcePosition);
|
|
|
| - block_->statements()->Add(
|
| - factory()->NewExpressionStatement(assignment, kNoSourcePosition),
|
| - zone());
|
| + block_->statements()->push_back(
|
| + factory()->NewExpressionStatement(assignment, kNoSourcePosition));
|
| }
|
| return temp;
|
| }
|
| @@ -286,7 +283,7 @@ void Parser::PatternRewriter::VisitRewritableExpression(
|
| PatternContext old_context = SetAssignmentContextIfNeeded(initializer);
|
| int pos = assign->position();
|
| Block* old_block = block_;
|
| - block_ = factory()->NewBlock(nullptr, 8, true, pos);
|
| + block_ = factory()->NewBlock(nullptr, true, pos);
|
| Variable* temp = nullptr;
|
| Expression* pattern = assign->target();
|
| Expression* old_value = current_value_;
|
| @@ -303,8 +300,8 @@ void Parser::PatternRewriter::VisitRewritableExpression(
|
| node->Rewrite(expr);
|
| block_ = old_block;
|
| if (block_) {
|
| - block_->statements()->Add(factory()->NewExpressionStatement(expr, pos),
|
| - zone());
|
| + block_->statements()->push_back(
|
| + factory()->NewExpressionStatement(expr, pos));
|
| }
|
| return set_context(old_context);
|
| }
|
| @@ -329,7 +326,7 @@ void Parser::PatternRewriter::VisitObjectLiteral(ObjectLiteral* pattern,
|
| Variable** temp_var) {
|
| auto temp = *temp_var = CreateTempVar(current_value_);
|
|
|
| - block_->statements()->Add(parser_->BuildAssertIsCoercible(temp), zone());
|
| + block_->statements()->push_back(parser_->BuildAssertIsCoercible(temp));
|
|
|
| for (ObjectLiteralProperty* property : *pattern->properties()) {
|
| PatternContext context = SetInitializerContextIfNeeded(property->value());
|
| @@ -373,7 +370,7 @@ void Parser::PatternRewriter::VisitArrayLiteral(ArrayLiteral* node,
|
| // wrap this new block in a try-finally statement, restore block_ to its
|
| // original value, and add the try-finally statement to block_.
|
| auto target = block_;
|
| - block_ = factory()->NewBlock(nullptr, 8, true, nopos);
|
| + block_ = factory()->NewBlock(nullptr, true, nopos);
|
|
|
| Spread* spread = nullptr;
|
| for (Expression* value : *node->values()) {
|
| @@ -420,35 +417,28 @@ void Parser::PatternRewriter::VisitArrayLiteral(ArrayLiteral* node,
|
| factory()->NewBooleanLiteral(false, kNoSourcePosition),
|
| kNoSourcePosition);
|
|
|
| - auto inner_else =
|
| - factory()->NewBlock(nullptr, 2, true, kNoSourcePosition);
|
| - inner_else->statements()->Add(
|
| - factory()->NewExpressionStatement(assign_value, nopos), zone());
|
| - inner_else->statements()->Add(
|
| - factory()->NewExpressionStatement(unset_done, nopos), zone());
|
| + auto inner_else = factory()->NewBlock(nullptr, true, kNoSourcePosition);
|
| + inner_else->statements()->push_back(
|
| + factory()->NewExpressionStatement(assign_value, nopos));
|
| + inner_else->statements()->push_back(
|
| + factory()->NewExpressionStatement(unset_done, nopos));
|
|
|
| auto inner_if = factory()->NewIfStatement(
|
| result_done,
|
| factory()->NewExpressionStatement(assign_undefined, nopos),
|
| inner_else, nopos);
|
|
|
| - auto next_block =
|
| - factory()->NewBlock(nullptr, 3, true, kNoSourcePosition);
|
| - next_block->statements()->Add(
|
| - factory()->NewExpressionStatement(
|
| - factory()->NewAssignment(
|
| - Token::ASSIGN, factory()->NewVariableProxy(done),
|
| - factory()->NewBooleanLiteral(true, nopos), nopos),
|
| - nopos),
|
| - zone());
|
| - next_block->statements()->Add(
|
| - factory()->NewExpressionStatement(
|
| - parser_->BuildIteratorNextResult(
|
| - factory()->NewVariableProxy(iterator), result,
|
| - kNoSourcePosition),
|
| - kNoSourcePosition),
|
| - zone());
|
| - next_block->statements()->Add(inner_if, zone());
|
| + auto next_block = factory()->NewBlock(nullptr, true, kNoSourcePosition);
|
| + next_block->statements()->push_back(factory()->NewExpressionStatement(
|
| + factory()->NewAssignment(
|
| + Token::ASSIGN, factory()->NewVariableProxy(done),
|
| + factory()->NewBooleanLiteral(true, nopos), nopos),
|
| + nopos));
|
| + next_block->statements()->push_back(factory()->NewExpressionStatement(
|
| + parser_->BuildIteratorNextResult(
|
| + factory()->NewVariableProxy(iterator), result, kNoSourcePosition),
|
| + kNoSourcePosition));
|
| + next_block->statements()->push_back(inner_if);
|
|
|
| if_not_done = factory()->NewIfStatement(
|
| factory()->NewUnaryOperation(
|
| @@ -456,7 +446,7 @@ void Parser::PatternRewriter::VisitArrayLiteral(ArrayLiteral* node,
|
| next_block, factory()->NewEmptyStatement(kNoSourcePosition),
|
| kNoSourcePosition);
|
| }
|
| - block_->statements()->Add(if_not_done, zone());
|
| + block_->statements()->push_back(if_not_done);
|
|
|
| if (!(value->IsLiteral() && value->AsLiteral()->raw_value()->IsTheHole())) {
|
| {
|
| @@ -465,8 +455,8 @@ void Parser::PatternRewriter::VisitArrayLiteral(ArrayLiteral* node,
|
| Expression* assignment = factory()->NewAssignment(
|
| Token::ASSIGN, proxy,
|
| factory()->NewSmiLiteral(kAbruptCompletion, nopos), nopos);
|
| - block_->statements()->Add(
|
| - factory()->NewExpressionStatement(assignment, nopos), zone());
|
| + block_->statements()->push_back(
|
| + factory()->NewExpressionStatement(assignment, nopos));
|
| }
|
|
|
| RecurseIntoSubpattern(value, factory()->NewVariableProxy(v));
|
| @@ -477,8 +467,8 @@ void Parser::PatternRewriter::VisitArrayLiteral(ArrayLiteral* node,
|
| Expression* assignment = factory()->NewAssignment(
|
| Token::ASSIGN, proxy,
|
| factory()->NewSmiLiteral(kNormalCompletion, nopos), nopos);
|
| - block_->statements()->Add(
|
| - factory()->NewExpressionStatement(assignment, nopos), zone());
|
| + block_->statements()->push_back(
|
| + factory()->NewExpressionStatement(assignment, nopos));
|
| }
|
| }
|
| set_context(context);
|
| @@ -554,9 +544,9 @@ void Parser::PatternRewriter::VisitArrayLiteral(ArrayLiteral* node,
|
| ast_value_factory()->done_string(), nopos),
|
| nopos);
|
|
|
| - Block* then = factory()->NewBlock(nullptr, 2, true, nopos);
|
| - then->statements()->Add(append_element, zone());
|
| - then->statements()->Add(unset_done, zone());
|
| + Block* then = factory()->NewBlock(nullptr, true, nopos);
|
| + then->statements()->push_back(append_element);
|
| + then->statements()->push_back(unset_done);
|
|
|
| maybe_append_and_unset_done = factory()->NewIfStatement(
|
| factory()->NewUnaryOperation(Token::NOT, result_done, nopos), then,
|
| @@ -572,14 +562,14 @@ void Parser::PatternRewriter::VisitArrayLiteral(ArrayLiteral* node,
|
| {
|
| Expression* condition = factory()->NewUnaryOperation(
|
| Token::NOT, factory()->NewVariableProxy(done), nopos);
|
| - Block* body = factory()->NewBlock(nullptr, 3, true, nopos);
|
| - body->statements()->Add(set_done, zone());
|
| - body->statements()->Add(get_next, zone());
|
| - body->statements()->Add(maybe_append_and_unset_done, zone());
|
| + Block* body = factory()->NewBlock(nullptr, true, nopos);
|
| + body->statements()->push_back(set_done);
|
| + body->statements()->push_back(get_next);
|
| + body->statements()->push_back(maybe_append_and_unset_done);
|
| loop->Initialize(condition, body);
|
| }
|
|
|
| - block_->statements()->Add(loop, zone());
|
| + block_->statements()->push_back(loop);
|
| RecurseIntoSubpattern(spread->expression(),
|
| factory()->NewVariableProxy(array));
|
| }
|
| @@ -636,8 +626,8 @@ void Parser::PatternRewriter::VisitProperty(v8::internal::Property* node) {
|
| Assignment* assignment =
|
| factory()->NewAssignment(Token::ASSIGN, node, value, node->position());
|
|
|
| - block_->statements()->Add(
|
| - factory()->NewExpressionStatement(assignment, kNoSourcePosition), zone());
|
| + block_->statements()->push_back(
|
| + factory()->NewExpressionStatement(assignment, kNoSourcePosition));
|
| }
|
|
|
|
|
|
|