OLD | NEW |
1 // Copyright 2015 the V8 project authors. All rights reserved. | 1 // Copyright 2015 the V8 project authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "src/ast/ast.h" | 5 #include "src/ast/ast.h" |
6 #include "src/messages.h" | 6 #include "src/messages.h" |
7 #include "src/parsing/parameter-initializer-rewriter.h" | 7 #include "src/parsing/parameter-initializer-rewriter.h" |
8 #include "src/parsing/parser.h" | 8 #include "src/parsing/parser.h" |
9 | 9 |
10 namespace v8 { | 10 namespace v8 { |
(...skipping 464 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
475 block_->statements()->Add(if_statement, zone()); | 475 block_->statements()->Add(if_statement, zone()); |
476 | 476 |
477 if (!(value->IsLiteral() && value->AsLiteral()->raw_value()->IsTheHole())) { | 477 if (!(value->IsLiteral() && value->AsLiteral()->raw_value()->IsTheHole())) { |
478 RecurseIntoSubpattern(value, factory()->NewVariableProxy(v)); | 478 RecurseIntoSubpattern(value, factory()->NewVariableProxy(v)); |
479 } | 479 } |
480 set_context(context); | 480 set_context(context); |
481 } | 481 } |
482 | 482 |
483 if (spread != nullptr) { | 483 if (spread != nullptr) { |
484 // array = []; | 484 // array = []; |
485 // if (!done) %concat_iterable_to_array(array, iterator); | 485 // if (!done) %concat_iterator_to_array(array, iterator); |
486 auto empty_exprs = new (zone()) ZoneList<Expression*>(0, zone()); | 486 auto empty_exprs = new (zone()) ZoneList<Expression*>(0, zone()); |
487 auto array = CreateTempVar(factory()->NewArrayLiteral( | 487 auto array = CreateTempVar(factory()->NewArrayLiteral( |
488 empty_exprs, | 488 empty_exprs, |
489 // Reuse pattern's literal index - it is unused since there is no | 489 // Reuse pattern's literal index - it is unused since there is no |
490 // actual literal allocated. | 490 // actual literal allocated. |
491 node->literal_index(), is_strong(scope()->language_mode()), | 491 node->literal_index(), is_strong(scope()->language_mode()), |
492 RelocInfo::kNoPosition)); | 492 RelocInfo::kNoPosition)); |
493 | 493 |
494 auto arguments = new (zone()) ZoneList<Expression*>(2, zone()); | 494 auto arguments = new (zone()) ZoneList<Expression*>(2, zone()); |
495 arguments->Add(factory()->NewVariableProxy(array), zone()); | 495 arguments->Add(factory()->NewVariableProxy(array), zone()); |
496 arguments->Add(factory()->NewVariableProxy(iterator), zone()); | 496 arguments->Add(factory()->NewVariableProxy(iterator), zone()); |
497 auto spread_into_array_call = | 497 auto spread_into_array_call = |
498 factory()->NewCallRuntime(Context::CONCAT_ITERABLE_TO_ARRAY_INDEX, | 498 factory()->NewCallRuntime(Context::CONCAT_ITERATOR_TO_ARRAY_INDEX, |
499 arguments, RelocInfo::kNoPosition); | 499 arguments, RelocInfo::kNoPosition); |
500 | 500 |
501 auto if_statement = factory()->NewIfStatement( | 501 auto if_statement = factory()->NewIfStatement( |
502 factory()->NewUnaryOperation(Token::NOT, | 502 factory()->NewUnaryOperation(Token::NOT, |
503 factory()->NewVariableProxy(done), | 503 factory()->NewVariableProxy(done), |
504 RelocInfo::kNoPosition), | 504 RelocInfo::kNoPosition), |
505 factory()->NewExpressionStatement(spread_into_array_call, | 505 factory()->NewExpressionStatement(spread_into_array_call, |
506 RelocInfo::kNoPosition), | 506 RelocInfo::kNoPosition), |
507 factory()->NewEmptyStatement(RelocInfo::kNoPosition), | 507 factory()->NewEmptyStatement(RelocInfo::kNoPosition), |
508 RelocInfo::kNoPosition); | 508 RelocInfo::kNoPosition); |
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
619 NOT_A_PATTERN(TryFinallyStatement) | 619 NOT_A_PATTERN(TryFinallyStatement) |
620 NOT_A_PATTERN(UnaryOperation) | 620 NOT_A_PATTERN(UnaryOperation) |
621 NOT_A_PATTERN(VariableDeclaration) | 621 NOT_A_PATTERN(VariableDeclaration) |
622 NOT_A_PATTERN(WhileStatement) | 622 NOT_A_PATTERN(WhileStatement) |
623 NOT_A_PATTERN(WithStatement) | 623 NOT_A_PATTERN(WithStatement) |
624 NOT_A_PATTERN(Yield) | 624 NOT_A_PATTERN(Yield) |
625 | 625 |
626 #undef NOT_A_PATTERN | 626 #undef NOT_A_PATTERN |
627 } // namespace internal | 627 } // namespace internal |
628 } // namespace v8 | 628 } // namespace v8 |
OLD | NEW |