| OLD | NEW |
| 1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 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/parsing/parser.h" | 5 #include "src/parsing/parser.h" |
| 6 | 6 |
| 7 #include <memory> | 7 #include <memory> |
| 8 | 8 |
| 9 #include "src/api.h" | 9 #include "src/api.h" |
| 10 #include "src/ast/ast-expression-rewriter.h" | 10 #include "src/ast/ast-expression-rewriter.h" |
| (...skipping 3609 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3620 factory()->NewVariableDeclaration(proxy, block_state.scope(), pos); | 3620 factory()->NewVariableDeclaration(proxy, block_state.scope(), pos); |
| 3621 Declare(declaration, DeclarationDescriptor::NORMAL, CONST, | 3621 Declare(declaration, DeclarationDescriptor::NORMAL, CONST, |
| 3622 Variable::DefaultInitializationFlag(CONST), CHECK_OK); | 3622 Variable::DefaultInitializationFlag(CONST), CHECK_OK); |
| 3623 } | 3623 } |
| 3624 | 3624 |
| 3625 Expression* extends = nullptr; | 3625 Expression* extends = nullptr; |
| 3626 if (Check(Token::EXTENDS)) { | 3626 if (Check(Token::EXTENDS)) { |
| 3627 block_state.set_start_position(scanner()->location().end_pos); | 3627 block_state.set_start_position(scanner()->location().end_pos); |
| 3628 ExpressionClassifier extends_classifier(this); | 3628 ExpressionClassifier extends_classifier(this); |
| 3629 extends = ParseLeftHandSideExpression(CHECK_OK); | 3629 extends = ParseLeftHandSideExpression(CHECK_OK); |
| 3630 CheckNoTailCallExpressions(CHECK_OK); | |
| 3631 RewriteNonPattern(CHECK_OK); | 3630 RewriteNonPattern(CHECK_OK); |
| 3632 impl()->AccumulateFormalParameterContainmentErrors(); | 3631 impl()->AccumulateFormalParameterContainmentErrors(); |
| 3633 } else { | 3632 } else { |
| 3634 block_state.set_start_position(scanner()->location().end_pos); | 3633 block_state.set_start_position(scanner()->location().end_pos); |
| 3635 } | 3634 } |
| 3636 | 3635 |
| 3637 | 3636 |
| 3638 ClassLiteralChecker checker(this); | 3637 ClassLiteralChecker checker(this); |
| 3639 ZoneList<ClassLiteral::Property*>* properties = NewClassPropertyList(4); | 3638 ZoneList<ClassLiteral::Property*>* properties = NewClassPropertyList(4); |
| 3640 ZoneList<Expression*>* instance_field_initializers = | 3639 ZoneList<Expression*>* instance_field_initializers = |
| (...skipping 650 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4291 // incremented after parsing is done. | 4290 // incremented after parsing is done. |
| 4292 ++use_counts_[v8::Isolate::kUseAsm]; | 4291 ++use_counts_[v8::Isolate::kUseAsm]; |
| 4293 DCHECK(scope()->is_declaration_scope()); | 4292 DCHECK(scope()->is_declaration_scope()); |
| 4294 scope()->AsDeclarationScope()->set_asm_module(); | 4293 scope()->AsDeclarationScope()->set_asm_module(); |
| 4295 } | 4294 } |
| 4296 | 4295 |
| 4297 void Parser::MarkCollectedTailCallExpressions() { | 4296 void Parser::MarkCollectedTailCallExpressions() { |
| 4298 const ZoneList<Expression*>& tail_call_expressions = | 4297 const ZoneList<Expression*>& tail_call_expressions = |
| 4299 function_state_->tail_call_expressions().expressions(); | 4298 function_state_->tail_call_expressions().expressions(); |
| 4300 for (int i = 0; i < tail_call_expressions.length(); ++i) { | 4299 for (int i = 0; i < tail_call_expressions.length(); ++i) { |
| 4301 Expression* expression = tail_call_expressions[i]; | 4300 MarkTailPosition(tail_call_expressions[i]); |
| 4302 // If only FLAG_harmony_explicit_tailcalls is enabled then expression | |
| 4303 // must be a Call expression. | |
| 4304 DCHECK(FLAG_harmony_tailcalls || !FLAG_harmony_explicit_tailcalls || | |
| 4305 expression->IsCall()); | |
| 4306 MarkTailPosition(expression); | |
| 4307 } | 4301 } |
| 4308 } | 4302 } |
| 4309 | 4303 |
| 4310 Expression* Parser::ExpressionListToExpression(ZoneList<Expression*>* args) { | 4304 Expression* Parser::ExpressionListToExpression(ZoneList<Expression*>* args) { |
| 4311 Expression* expr = args->at(0); | 4305 Expression* expr = args->at(0); |
| 4312 for (int i = 1; i < args->length(); ++i) { | 4306 for (int i = 1; i < args->length(); ++i) { |
| 4313 expr = factory()->NewBinaryOperation(Token::COMMA, expr, args->at(i), | 4307 expr = factory()->NewBinaryOperation(Token::COMMA, expr, args->at(i), |
| 4314 expr->position()); | 4308 expr->position()); |
| 4315 } | 4309 } |
| 4316 return expr; | 4310 return expr; |
| (...skipping 1259 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5576 | 5570 |
| 5577 return final_loop; | 5571 return final_loop; |
| 5578 } | 5572 } |
| 5579 | 5573 |
| 5580 #undef CHECK_OK | 5574 #undef CHECK_OK |
| 5581 #undef CHECK_OK_VOID | 5575 #undef CHECK_OK_VOID |
| 5582 #undef CHECK_FAILED | 5576 #undef CHECK_FAILED |
| 5583 | 5577 |
| 5584 } // namespace internal | 5578 } // namespace internal |
| 5585 } // namespace v8 | 5579 } // namespace v8 |
| OLD | NEW |