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/v8.h" | 5 #include "src/v8.h" |
6 | 6 |
7 #include "src/api.h" | 7 #include "src/api.h" |
8 #include "src/ast.h" | 8 #include "src/ast.h" |
9 #include "src/bailout-reason.h" | 9 #include "src/bailout-reason.h" |
10 #include "src/base/platform/platform.h" | 10 #include "src/base/platform/platform.h" |
(...skipping 730 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
741 | 741 |
742 Expression* ParserTraits::ThisExpression(Scope* scope, AstNodeFactory* factory, | 742 Expression* ParserTraits::ThisExpression(Scope* scope, AstNodeFactory* factory, |
743 int pos) { | 743 int pos) { |
744 return scope->NewUnresolved(factory, | 744 return scope->NewUnresolved(factory, |
745 parser_->ast_value_factory()->this_string(), | 745 parser_->ast_value_factory()->this_string(), |
746 Variable::THIS, pos, pos + 4); | 746 Variable::THIS, pos, pos + 4); |
747 } | 747 } |
748 | 748 |
749 Expression* ParserTraits::SuperReference(Scope* scope, AstNodeFactory* factory, | 749 Expression* ParserTraits::SuperReference(Scope* scope, AstNodeFactory* factory, |
750 int pos) { | 750 int pos) { |
| 751 // TODO(arv): Split into SuperProperty and SuperCall? |
| 752 VariableProxy* home_object_proxy = scope->NewUnresolved( |
| 753 factory, parser_->ast_value_factory()->home_object_string(), |
| 754 Variable::NORMAL, pos); |
| 755 |
751 return factory->NewSuperReference( | 756 return factory->NewSuperReference( |
752 ThisExpression(scope, factory, pos)->AsVariableProxy(), | 757 ThisExpression(scope, factory, pos)->AsVariableProxy(), home_object_proxy, |
753 pos); | 758 pos); |
754 } | 759 } |
755 | 760 |
756 | 761 |
757 Expression* ParserTraits::DefaultConstructor(bool call_super, Scope* scope, | 762 Expression* ParserTraits::DefaultConstructor(bool call_super, Scope* scope, |
758 int pos, int end_pos) { | 763 int pos, int end_pos) { |
759 return parser_->DefaultConstructor(call_super, scope, pos, end_pos); | 764 return parser_->DefaultConstructor(call_super, scope, pos, end_pos); |
760 } | 765 } |
761 | 766 |
762 | 767 |
(...skipping 366 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1129 DCHECK(info->language_mode() == shared_info->language_mode()); | 1134 DCHECK(info->language_mode() == shared_info->language_mode()); |
1130 scope->SetLanguageMode(shared_info->language_mode()); | 1135 scope->SetLanguageMode(shared_info->language_mode()); |
1131 FunctionLiteral::FunctionType function_type = shared_info->is_expression() | 1136 FunctionLiteral::FunctionType function_type = shared_info->is_expression() |
1132 ? (shared_info->is_anonymous() | 1137 ? (shared_info->is_anonymous() |
1133 ? FunctionLiteral::ANONYMOUS_EXPRESSION | 1138 ? FunctionLiteral::ANONYMOUS_EXPRESSION |
1134 : FunctionLiteral::NAMED_EXPRESSION) | 1139 : FunctionLiteral::NAMED_EXPRESSION) |
1135 : FunctionLiteral::DECLARATION; | 1140 : FunctionLiteral::DECLARATION; |
1136 bool ok = true; | 1141 bool ok = true; |
1137 | 1142 |
1138 if (shared_info->is_arrow()) { | 1143 if (shared_info->is_arrow()) { |
1139 Scope* scope = NewScope(scope_, ARROW_SCOPE); | 1144 Scope* scope = |
| 1145 NewScope(scope_, ARROW_SCOPE, FunctionKind::kArrowFunction); |
1140 scope->set_start_position(shared_info->start_position()); | 1146 scope->set_start_position(shared_info->start_position()); |
1141 FormalParameterErrorLocations error_locs; | 1147 FormalParameterErrorLocations error_locs; |
1142 bool has_rest = false; | 1148 bool has_rest = false; |
1143 if (Check(Token::LPAREN)) { | 1149 if (Check(Token::LPAREN)) { |
1144 // '(' StrictFormalParameters ')' | 1150 // '(' StrictFormalParameters ')' |
1145 ParseFormalParameterList(scope, &error_locs, &has_rest, &ok); | 1151 ParseFormalParameterList(scope, &error_locs, &has_rest, &ok); |
1146 if (ok) ok = Check(Token::RPAREN); | 1152 if (ok) ok = Check(Token::RPAREN); |
1147 } else { | 1153 } else { |
1148 // BindingIdentifier | 1154 // BindingIdentifier |
1149 ParseFormalParameter(scope, &error_locs, has_rest, &ok); | 1155 ParseFormalParameter(scope, &error_locs, has_rest, &ok); |
(...skipping 4625 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5775 | 5781 |
5776 Expression* Parser::SpreadCallNew(Expression* function, | 5782 Expression* Parser::SpreadCallNew(Expression* function, |
5777 ZoneList<v8::internal::Expression*>* args, | 5783 ZoneList<v8::internal::Expression*>* args, |
5778 int pos) { | 5784 int pos) { |
5779 args->InsertAt(0, function, zone()); | 5785 args->InsertAt(0, function, zone()); |
5780 | 5786 |
5781 return factory()->NewCallRuntime( | 5787 return factory()->NewCallRuntime( |
5782 ast_value_factory()->reflect_construct_string(), NULL, args, pos); | 5788 ast_value_factory()->reflect_construct_string(), NULL, args, pos); |
5783 } | 5789 } |
5784 } } // namespace v8::internal | 5790 } } // namespace v8::internal |
OLD | NEW |