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 559 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
570 char array[100]; | 570 char array[100]; |
571 const char* string = DoubleToCString(double_value, ArrayVector(array)); | 571 const char* string = DoubleToCString(double_value, ArrayVector(array)); |
572 return parser_->ast_value_factory()->GetOneByteString(string); | 572 return parser_->ast_value_factory()->GetOneByteString(string); |
573 } | 573 } |
574 | 574 |
575 | 575 |
576 const AstRawString* ParserTraits::GetNextSymbol(Scanner* scanner) const { | 576 const AstRawString* ParserTraits::GetNextSymbol(Scanner* scanner) const { |
577 return parser_->scanner()->NextSymbol(parser_->ast_value_factory()); | 577 return parser_->scanner()->NextSymbol(parser_->ast_value_factory()); |
578 } | 578 } |
579 | 579 |
580 Expression* ParserTraits::ThisExpression(int pos) const { | 580 Expression* ParserTraits::ThisExpression(int pos) { |
581 return parser_->NewUnresolved(parser_->ast_value_factory()->this_string(), | 581 return parser_->NewUnresolved(parser_->ast_value_factory()->this_string(), |
582 pos, pos + 4, Variable::THIS); | 582 pos, pos + 4, Variable::THIS); |
583 } | 583 } |
584 | 584 |
585 Expression* ParserTraits::NewSuperPropertyReference(AstNodeFactory* factory, | 585 Expression* ParserTraits::NewSuperPropertyReference(AstNodeFactory* factory, |
586 int pos) const { | 586 int pos) { |
587 // this_function[home_object_symbol] | 587 // this_function[home_object_symbol] |
588 VariableProxy* this_function_proxy = parser_->NewUnresolved( | 588 VariableProxy* this_function_proxy = parser_->NewUnresolved( |
589 parser_->ast_value_factory()->this_function_string(), pos); | 589 parser_->ast_value_factory()->this_function_string(), pos); |
590 Expression* home_object_symbol_literal = | 590 Expression* home_object_symbol_literal = |
591 factory->NewSymbolLiteral("home_object_symbol", kNoSourcePosition); | 591 factory->NewSymbolLiteral("home_object_symbol", kNoSourcePosition); |
592 Expression* home_object = factory->NewProperty( | 592 Expression* home_object = factory->NewProperty( |
593 this_function_proxy, home_object_symbol_literal, pos); | 593 this_function_proxy, home_object_symbol_literal, pos); |
594 return factory->NewSuperPropertyReference( | 594 return factory->NewSuperPropertyReference( |
595 ThisExpression(pos)->AsVariableProxy(), home_object, pos); | 595 ThisExpression(pos)->AsVariableProxy(), home_object, pos); |
596 } | 596 } |
597 | 597 |
598 Expression* ParserTraits::NewSuperCallReference(AstNodeFactory* factory, | 598 Expression* ParserTraits::NewSuperCallReference(AstNodeFactory* factory, |
599 int pos) const { | 599 int pos) { |
600 VariableProxy* new_target_proxy = parser_->NewUnresolved( | 600 VariableProxy* new_target_proxy = parser_->NewUnresolved( |
601 parser_->ast_value_factory()->new_target_string(), pos); | 601 parser_->ast_value_factory()->new_target_string(), pos); |
602 VariableProxy* this_function_proxy = parser_->NewUnresolved( | 602 VariableProxy* this_function_proxy = parser_->NewUnresolved( |
603 parser_->ast_value_factory()->this_function_string(), pos); | 603 parser_->ast_value_factory()->this_function_string(), pos); |
604 return factory->NewSuperCallReference(ThisExpression(pos)->AsVariableProxy(), | 604 return factory->NewSuperCallReference(ThisExpression(pos)->AsVariableProxy(), |
605 new_target_proxy, this_function_proxy, | 605 new_target_proxy, this_function_proxy, |
606 pos); | 606 pos); |
607 } | 607 } |
608 | 608 |
609 Expression* ParserTraits::NewTargetExpression(int pos) const { | 609 Expression* ParserTraits::NewTargetExpression(int pos) { |
610 static const int kNewTargetStringLength = 10; | 610 static const int kNewTargetStringLength = 10; |
611 auto proxy = | 611 auto proxy = |
612 parser_->NewUnresolved(parser_->ast_value_factory()->new_target_string(), | 612 parser_->NewUnresolved(parser_->ast_value_factory()->new_target_string(), |
613 pos, pos + kNewTargetStringLength); | 613 pos, pos + kNewTargetStringLength); |
614 proxy->set_is_new_target(); | 614 proxy->set_is_new_target(); |
615 return proxy; | 615 return proxy; |
616 } | 616 } |
617 | 617 |
618 Expression* ParserTraits::FunctionSentExpression(AstNodeFactory* factory, | 618 Expression* ParserTraits::FunctionSentExpression(AstNodeFactory* factory, |
619 int pos) const { | 619 int pos) const { |
(...skipping 29 matching lines...) Expand all Loading... |
649 } | 649 } |
650 default: | 650 default: |
651 DCHECK(false); | 651 DCHECK(false); |
652 } | 652 } |
653 return NULL; | 653 return NULL; |
654 } | 654 } |
655 | 655 |
656 Expression* ParserTraits::ExpressionFromIdentifier(const AstRawString* name, | 656 Expression* ParserTraits::ExpressionFromIdentifier(const AstRawString* name, |
657 int start_position, | 657 int start_position, |
658 int end_position, | 658 int end_position, |
659 InferName infer) const { | 659 InferName infer) { |
660 if (infer == InferName::kYes && parser_->fni_ != NULL) { | 660 if (infer == InferName::kYes && parser_->fni_ != NULL) { |
661 parser_->fni_->PushVariableName(name); | 661 parser_->fni_->PushVariableName(name); |
662 } | 662 } |
663 return parser_->NewUnresolved(name, start_position, end_position); | 663 return parser_->NewUnresolved(name, start_position, end_position); |
664 } | 664 } |
665 | 665 |
666 | 666 |
667 Expression* ParserTraits::ExpressionFromString(int pos, Scanner* scanner, | 667 Expression* ParserTraits::ExpressionFromString(int pos, Scanner* scanner, |
668 AstNodeFactory* factory) const { | 668 AstNodeFactory* factory) const { |
669 const AstRawString* symbol = GetSymbol(scanner); | 669 const AstRawString* symbol = GetSymbol(scanner); |
(...skipping 6247 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6917 node->Print(Isolate::Current()); | 6917 node->Print(Isolate::Current()); |
6918 } | 6918 } |
6919 #endif // DEBUG | 6919 #endif // DEBUG |
6920 | 6920 |
6921 #undef CHECK_OK | 6921 #undef CHECK_OK |
6922 #undef CHECK_OK_VOID | 6922 #undef CHECK_OK_VOID |
6923 #undef CHECK_FAILED | 6923 #undef CHECK_FAILED |
6924 | 6924 |
6925 } // namespace internal | 6925 } // namespace internal |
6926 } // namespace v8 | 6926 } // namespace v8 |
OLD | NEW |