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 267 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
278 } | 278 } |
279 | 279 |
280 materialized_literal_count = function_state.materialized_literal_count(); | 280 materialized_literal_count = function_state.materialized_literal_count(); |
281 expected_property_count = function_state.expected_property_count(); | 281 expected_property_count = function_state.expected_property_count(); |
282 } | 282 } |
283 | 283 |
284 FunctionLiteral* function_literal = factory()->NewFunctionLiteral( | 284 FunctionLiteral* function_literal = factory()->NewFunctionLiteral( |
285 name, function_scope, body, materialized_literal_count, | 285 name, function_scope, body, materialized_literal_count, |
286 expected_property_count, parameter_count, parameter_count, | 286 expected_property_count, parameter_count, parameter_count, |
287 FunctionLiteral::kNoDuplicateParameters, | 287 FunctionLiteral::kNoDuplicateParameters, |
288 FunctionLiteral::kAnonymousExpression, default_eager_compile_hint(), pos); | 288 FunctionLiteral::kAnonymousExpression, default_eager_compile_hint(), pos, |
| 289 true); |
289 | 290 |
290 function_literal->set_requires_class_field_init(requires_class_field_init); | 291 function_literal->set_requires_class_field_init(requires_class_field_init); |
291 | 292 |
292 return function_literal; | 293 return function_literal; |
293 } | 294 } |
294 | 295 |
295 // ---------------------------------------------------------------------------- | 296 // ---------------------------------------------------------------------------- |
296 // The CHECK_OK macro is a convenient macro to enforce error | 297 // The CHECK_OK macro is a convenient macro to enforce error |
297 // handling for functions that may fail (by returning !*ok). | 298 // handling for functions that may fail (by returning !*ok). |
298 // | 299 // |
(...skipping 2416 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2715 } // DiscardableZoneScope goes out of scope. | 2716 } // DiscardableZoneScope goes out of scope. |
2716 | 2717 |
2717 FunctionLiteral::ParameterFlag duplicate_parameters = | 2718 FunctionLiteral::ParameterFlag duplicate_parameters = |
2718 has_duplicate_parameters ? FunctionLiteral::kHasDuplicateParameters | 2719 has_duplicate_parameters ? FunctionLiteral::kHasDuplicateParameters |
2719 : FunctionLiteral::kNoDuplicateParameters; | 2720 : FunctionLiteral::kNoDuplicateParameters; |
2720 | 2721 |
2721 // Note that the FunctionLiteral needs to be created in the main Zone again. | 2722 // Note that the FunctionLiteral needs to be created in the main Zone again. |
2722 FunctionLiteral* function_literal = factory()->NewFunctionLiteral( | 2723 FunctionLiteral* function_literal = factory()->NewFunctionLiteral( |
2723 function_name, scope, body, materialized_literal_count, | 2724 function_name, scope, body, materialized_literal_count, |
2724 expected_property_count, num_parameters, function_length, | 2725 expected_property_count, num_parameters, function_length, |
2725 duplicate_parameters, function_type, eager_compile_hint, pos); | 2726 duplicate_parameters, function_type, eager_compile_hint, pos, true); |
2726 function_literal->set_function_token_position(function_token_pos); | 2727 function_literal->set_function_token_position(function_token_pos); |
2727 if (should_be_used_once_hint) | 2728 if (should_be_used_once_hint) |
2728 function_literal->set_should_be_used_once_hint(); | 2729 function_literal->set_should_be_used_once_hint(); |
2729 | 2730 |
2730 if (should_infer_name) { | 2731 if (should_infer_name) { |
2731 DCHECK_NOT_NULL(fni_); | 2732 DCHECK_NOT_NULL(fni_); |
2732 fni_->AddFunction(function_literal); | 2733 fni_->AddFunction(function_literal); |
2733 } | 2734 } |
2734 return function_literal; | 2735 return function_literal; |
2735 } | 2736 } |
(...skipping 673 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3409 } | 3410 } |
3410 body->Add(factory()->NewReturnStatement(ThisExpression(kNoSourcePosition), | 3411 body->Add(factory()->NewReturnStatement(ThisExpression(kNoSourcePosition), |
3411 kNoSourcePosition), | 3412 kNoSourcePosition), |
3412 zone()); | 3413 zone()); |
3413 FunctionLiteral* function_literal = factory()->NewFunctionLiteral( | 3414 FunctionLiteral* function_literal = factory()->NewFunctionLiteral( |
3414 ast_value_factory()->empty_string(), initializer_scope, body, | 3415 ast_value_factory()->empty_string(), initializer_scope, body, |
3415 initializer_state.materialized_literal_count(), | 3416 initializer_state.materialized_literal_count(), |
3416 initializer_state.expected_property_count(), 0, count, | 3417 initializer_state.expected_property_count(), 0, count, |
3417 FunctionLiteral::kNoDuplicateParameters, | 3418 FunctionLiteral::kNoDuplicateParameters, |
3418 FunctionLiteral::kAnonymousExpression, | 3419 FunctionLiteral::kAnonymousExpression, |
3419 FunctionLiteral::kShouldLazyCompile, initializer_scope->start_position()); | 3420 FunctionLiteral::kShouldLazyCompile, initializer_scope->start_position(), |
| 3421 true); |
3420 function_literal->set_is_class_field_initializer(true); | 3422 function_literal->set_is_class_field_initializer(true); |
3421 return function_literal; | 3423 return function_literal; |
3422 } | 3424 } |
3423 | 3425 |
3424 FunctionLiteral* Parser::InsertClassFieldInitializer( | 3426 FunctionLiteral* Parser::InsertClassFieldInitializer( |
3425 FunctionLiteral* constructor) { | 3427 FunctionLiteral* constructor) { |
3426 Statement* call_initializer = factory()->NewExpressionStatement( | 3428 Statement* call_initializer = factory()->NewExpressionStatement( |
3427 CallClassFieldInitializer( | 3429 CallClassFieldInitializer( |
3428 constructor->scope(), | 3430 constructor->scope(), |
3429 constructor->scope()->NewUnresolved( | 3431 constructor->scope()->NewUnresolved( |
(...skipping 1989 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5419 | 5421 |
5420 return final_loop; | 5422 return final_loop; |
5421 } | 5423 } |
5422 | 5424 |
5423 #undef CHECK_OK | 5425 #undef CHECK_OK |
5424 #undef CHECK_OK_VOID | 5426 #undef CHECK_OK_VOID |
5425 #undef CHECK_FAILED | 5427 #undef CHECK_FAILED |
5426 | 5428 |
5427 } // namespace internal | 5429 } // namespace internal |
5428 } // namespace v8 | 5430 } // namespace v8 |
OLD | NEW |