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 265 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
276 | 276 |
277 materialized_literal_count = function_state.materialized_literal_count(); | 277 materialized_literal_count = function_state.materialized_literal_count(); |
278 expected_property_count = function_state.expected_property_count(); | 278 expected_property_count = function_state.expected_property_count(); |
279 } | 279 } |
280 | 280 |
281 FunctionLiteral* function_literal = factory()->NewFunctionLiteral( | 281 FunctionLiteral* function_literal = factory()->NewFunctionLiteral( |
282 name, function_scope, body, materialized_literal_count, | 282 name, function_scope, body, materialized_literal_count, |
283 expected_property_count, parameter_count, | 283 expected_property_count, parameter_count, |
284 FunctionLiteral::kNoDuplicateParameters, | 284 FunctionLiteral::kNoDuplicateParameters, |
285 FunctionLiteral::kAnonymousExpression, | 285 FunctionLiteral::kAnonymousExpression, |
286 FunctionLiteral::kShouldLazyCompile, kind, pos); | 286 FunctionLiteral::kShouldLazyCompile, pos); |
287 | 287 |
288 function_literal->set_requires_class_field_init(requires_class_field_init); | 288 function_literal->set_requires_class_field_init(requires_class_field_init); |
289 | 289 |
290 return function_literal; | 290 return function_literal; |
291 } | 291 } |
292 | 292 |
293 | 293 |
294 // ---------------------------------------------------------------------------- | 294 // ---------------------------------------------------------------------------- |
295 // Target is a support class to facilitate manipulation of the | 295 // Target is a support class to facilitate manipulation of the |
296 // Parser's target_stack_ (the stack of potential 'break' and | 296 // Parser's target_stack_ (the stack of potential 'break' and |
(...skipping 2538 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2835 } // DiscardableZoneScope goes out of scope. | 2835 } // DiscardableZoneScope goes out of scope. |
2836 | 2836 |
2837 FunctionLiteral::ParameterFlag duplicate_parameters = | 2837 FunctionLiteral::ParameterFlag duplicate_parameters = |
2838 has_duplicate_parameters ? FunctionLiteral::kHasDuplicateParameters | 2838 has_duplicate_parameters ? FunctionLiteral::kHasDuplicateParameters |
2839 : FunctionLiteral::kNoDuplicateParameters; | 2839 : FunctionLiteral::kNoDuplicateParameters; |
2840 | 2840 |
2841 // Note that the FunctionLiteral needs to be created in the main Zone again. | 2841 // Note that the FunctionLiteral needs to be created in the main Zone again. |
2842 FunctionLiteral* function_literal = factory()->NewFunctionLiteral( | 2842 FunctionLiteral* function_literal = factory()->NewFunctionLiteral( |
2843 function_name, main_scope, body, materialized_literal_count, | 2843 function_name, main_scope, body, materialized_literal_count, |
2844 expected_property_count, arity, duplicate_parameters, function_type, | 2844 expected_property_count, arity, duplicate_parameters, function_type, |
2845 eager_compile_hint, kind, pos); | 2845 eager_compile_hint, pos); |
2846 function_literal->set_function_token_position(function_token_pos); | 2846 function_literal->set_function_token_position(function_token_pos); |
2847 if (should_be_used_once_hint) | 2847 if (should_be_used_once_hint) |
2848 function_literal->set_should_be_used_once_hint(); | 2848 function_literal->set_should_be_used_once_hint(); |
2849 | 2849 |
2850 if (should_infer_name) { | 2850 if (should_infer_name) { |
2851 DCHECK_NOT_NULL(fni_); | 2851 DCHECK_NOT_NULL(fni_); |
2852 fni_->AddFunction(function_literal); | 2852 fni_->AddFunction(function_literal); |
2853 } | 2853 } |
2854 return function_literal; | 2854 return function_literal; |
2855 } | 2855 } |
(...skipping 649 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3505 } | 3505 } |
3506 body->Add(factory()->NewReturnStatement(ThisExpression(kNoSourcePosition), | 3506 body->Add(factory()->NewReturnStatement(ThisExpression(kNoSourcePosition), |
3507 kNoSourcePosition), | 3507 kNoSourcePosition), |
3508 zone()); | 3508 zone()); |
3509 FunctionLiteral* function_literal = factory()->NewFunctionLiteral( | 3509 FunctionLiteral* function_literal = factory()->NewFunctionLiteral( |
3510 ast_value_factory()->empty_string(), initializer_scope, body, | 3510 ast_value_factory()->empty_string(), initializer_scope, body, |
3511 initializer_state.materialized_literal_count(), | 3511 initializer_state.materialized_literal_count(), |
3512 initializer_state.expected_property_count(), 0, | 3512 initializer_state.expected_property_count(), 0, |
3513 FunctionLiteral::kNoDuplicateParameters, | 3513 FunctionLiteral::kNoDuplicateParameters, |
3514 FunctionLiteral::kAnonymousExpression, | 3514 FunctionLiteral::kAnonymousExpression, |
3515 FunctionLiteral::kShouldLazyCompile, kind, | 3515 FunctionLiteral::kShouldLazyCompile, initializer_scope->start_position()); |
3516 initializer_scope->start_position()); | |
3517 function_literal->set_is_class_field_initializer(true); | 3516 function_literal->set_is_class_field_initializer(true); |
3518 function_literal->scope()->set_arity(count); | 3517 function_literal->scope()->set_arity(count); |
3519 return function_literal; | 3518 return function_literal; |
3520 } | 3519 } |
3521 | 3520 |
3522 FunctionLiteral* Parser::InsertClassFieldInitializer( | 3521 FunctionLiteral* Parser::InsertClassFieldInitializer( |
3523 FunctionLiteral* constructor) { | 3522 FunctionLiteral* constructor) { |
3524 Statement* call_initializer = factory()->NewExpressionStatement( | 3523 Statement* call_initializer = factory()->NewExpressionStatement( |
3525 CallClassFieldInitializer( | 3524 CallClassFieldInitializer( |
3526 constructor->scope(), | 3525 constructor->scope(), |
(...skipping 2035 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5562 | 5561 |
5563 return final_loop; | 5562 return final_loop; |
5564 } | 5563 } |
5565 | 5564 |
5566 #undef CHECK_OK | 5565 #undef CHECK_OK |
5567 #undef CHECK_OK_VOID | 5566 #undef CHECK_OK_VOID |
5568 #undef CHECK_FAILED | 5567 #undef CHECK_FAILED |
5569 | 5568 |
5570 } // namespace internal | 5569 } // namespace internal |
5571 } // namespace v8 | 5570 } // namespace v8 |
OLD | NEW |