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 #ifndef V8_PARSING_PREPARSER_H | 5 #ifndef V8_PARSING_PREPARSER_H |
6 #define V8_PARSING_PREPARSER_H | 6 #define V8_PARSING_PREPARSER_H |
7 | 7 |
8 #include "src/ast/scopes.h" | 8 #include "src/ast/scopes.h" |
9 #include "src/parsing/parser-base.h" | 9 #include "src/parsing/parser-base.h" |
10 | 10 |
(...skipping 634 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
645 int pos) { | 645 int pos) { |
646 return PreParserStatement::Jump(); | 646 return PreParserStatement::Jump(); |
647 } | 647 } |
648 PreParserExpression NewFunctionLiteral( | 648 PreParserExpression NewFunctionLiteral( |
649 PreParserIdentifier name, Scope* scope, PreParserStatementList body, | 649 PreParserIdentifier name, Scope* scope, PreParserStatementList body, |
650 int materialized_literal_count, int expected_property_count, | 650 int materialized_literal_count, int expected_property_count, |
651 int parameter_count, int function_length, | 651 int parameter_count, int function_length, |
652 FunctionLiteral::ParameterFlag has_duplicate_parameters, | 652 FunctionLiteral::ParameterFlag has_duplicate_parameters, |
653 FunctionLiteral::FunctionType function_type, | 653 FunctionLiteral::FunctionType function_type, |
654 FunctionLiteral::EagerCompileHint eager_compile_hint, int position, | 654 FunctionLiteral::EagerCompileHint eager_compile_hint, int position, |
655 bool has_braces) { | 655 bool has_braces, int function_literal_id) { |
656 return PreParserExpression::Default(); | 656 return PreParserExpression::Default(); |
657 } | 657 } |
658 | 658 |
659 PreParserExpression NewSpread(PreParserExpression expression, int pos, | 659 PreParserExpression NewSpread(PreParserExpression expression, int pos, |
660 int expr_pos) { | 660 int expr_pos) { |
661 return PreParserExpression::Spread(expression); | 661 return PreParserExpression::Spread(expression); |
662 } | 662 } |
663 | 663 |
664 PreParserExpression NewEmptyParentheses(int pos) { | 664 PreParserExpression NewEmptyParentheses(int pos) { |
665 return PreParserExpression::Default(); | 665 return PreParserExpression::Default(); |
(...skipping 397 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1063 DeclareClass(PreParserIdentifier variable_name, PreParserExpression value, | 1063 DeclareClass(PreParserIdentifier variable_name, PreParserExpression value, |
1064 ZoneList<const AstRawString*>* names, int class_token_pos, | 1064 ZoneList<const AstRawString*>* names, int class_token_pos, |
1065 int end_pos, bool* ok) { | 1065 int end_pos, bool* ok) { |
1066 return PreParserStatement::Default(); | 1066 return PreParserStatement::Default(); |
1067 } | 1067 } |
1068 V8_INLINE void DeclareClassVariable(PreParserIdentifier name, | 1068 V8_INLINE void DeclareClassVariable(PreParserIdentifier name, |
1069 Scope* block_scope, ClassInfo* class_info, | 1069 Scope* block_scope, ClassInfo* class_info, |
1070 int class_token_pos, bool* ok) {} | 1070 int class_token_pos, bool* ok) {} |
1071 V8_INLINE void DeclareClassProperty(PreParserIdentifier class_name, | 1071 V8_INLINE void DeclareClassProperty(PreParserIdentifier class_name, |
1072 PreParserExpression property, | 1072 PreParserExpression property, |
1073 ClassInfo* class_info, bool* ok) {} | 1073 ClassLiteralProperty::Kind kind, |
| 1074 bool is_static, bool is_constructor, |
| 1075 ClassInfo* class_info, bool* ok) { |
| 1076 if (kind == ClassLiteralProperty::FIELD && !is_static && !is_constructor) { |
| 1077 class_info->instance_field_initializers->Add( |
| 1078 PreParserExpression::Default(), zone()); |
| 1079 } |
| 1080 } |
1074 V8_INLINE PreParserExpression RewriteClassLiteral(PreParserIdentifier name, | 1081 V8_INLINE PreParserExpression RewriteClassLiteral(PreParserIdentifier name, |
1075 ClassInfo* class_info, | 1082 ClassInfo* class_info, |
1076 int pos, bool* ok) { | 1083 int pos, bool* ok) { |
| 1084 bool has_default_constructor = !class_info->has_seen_constructor; |
| 1085 bool has_instance_fields = |
| 1086 class_info->instance_field_initializers->length() > 0; |
| 1087 // Account for the default constructor. |
| 1088 if (has_default_constructor) GetNextFunctionLiteralId(); |
| 1089 if (allow_harmony_class_fields() && has_instance_fields) { |
| 1090 // Account for initializer function. |
| 1091 GetNextFunctionLiteralId(); |
| 1092 } |
1077 return PreParserExpression::Default(); | 1093 return PreParserExpression::Default(); |
1078 } | 1094 } |
1079 | 1095 |
1080 V8_INLINE PreParserStatement DeclareNative(PreParserIdentifier name, int pos, | 1096 V8_INLINE PreParserStatement DeclareNative(PreParserIdentifier name, int pos, |
1081 bool* ok) { | 1097 bool* ok) { |
1082 return PreParserStatement::Default(); | 1098 return PreParserStatement::Default(); |
1083 } | 1099 } |
1084 | 1100 |
1085 V8_INLINE void QueueDestructuringAssignmentForRewriting( | 1101 V8_INLINE void QueueDestructuringAssignmentForRewriting( |
1086 PreParserExpression assignment) {} | 1102 PreParserExpression assignment) {} |
(...skipping 458 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1545 function_state_->NextMaterializedLiteralIndex(); | 1561 function_state_->NextMaterializedLiteralIndex(); |
1546 function_state_->NextMaterializedLiteralIndex(); | 1562 function_state_->NextMaterializedLiteralIndex(); |
1547 } | 1563 } |
1548 return EmptyExpression(); | 1564 return EmptyExpression(); |
1549 } | 1565 } |
1550 | 1566 |
1551 } // namespace internal | 1567 } // namespace internal |
1552 } // namespace v8 | 1568 } // namespace v8 |
1553 | 1569 |
1554 #endif // V8_PARSING_PREPARSER_H | 1570 #endif // V8_PARSING_PREPARSER_H |
OLD | NEW |