| 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_SCOPES_H_ | 5 #ifndef V8_SCOPES_H_ |
| 6 #define V8_SCOPES_H_ | 6 #define V8_SCOPES_H_ |
| 7 | 7 |
| 8 #include "src/ast.h" | 8 #include "src/ast.h" |
| 9 #include "src/pending-compilation-error-handler.h" | 9 #include "src/pending-compilation-error-handler.h" |
| 10 #include "src/zone.h" | 10 #include "src/zone.h" |
| (...skipping 431 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 442 } | 442 } |
| 443 | 443 |
| 444 // --------------------------------------------------------------------------- | 444 // --------------------------------------------------------------------------- |
| 445 // Variable allocation. | 445 // Variable allocation. |
| 446 | 446 |
| 447 // Collect stack and context allocated local variables in this scope. Note | 447 // Collect stack and context allocated local variables in this scope. Note |
| 448 // that the function variable - if present - is not collected and should be | 448 // that the function variable - if present - is not collected and should be |
| 449 // handled separately. | 449 // handled separately. |
| 450 void CollectStackAndContextLocals( | 450 void CollectStackAndContextLocals( |
| 451 ZoneList<Variable*>* stack_locals, ZoneList<Variable*>* context_locals, | 451 ZoneList<Variable*>* stack_locals, ZoneList<Variable*>* context_locals, |
| 452 ZoneList<Variable*>* context_globals, |
| 452 ZoneList<Variable*>* strong_mode_free_variables = nullptr); | 453 ZoneList<Variable*>* strong_mode_free_variables = nullptr); |
| 453 | 454 |
| 454 // Current number of var or const locals. | 455 // Current number of var or const locals. |
| 455 int num_var_or_const() { return num_var_or_const_; } | 456 int num_var_or_const() { return num_var_or_const_; } |
| 456 | 457 |
| 457 // Result of variable allocation. | 458 // Result of variable allocation. |
| 458 int num_stack_slots() const { return num_stack_slots_; } | 459 int num_stack_slots() const { return num_stack_slots_; } |
| 459 int num_heap_slots() const { return num_heap_slots_; } | 460 int num_heap_slots() const { return num_heap_slots_; } |
| 461 int num_global_slots() const { return num_global_slots_; } |
| 460 | 462 |
| 461 int StackLocalCount() const; | 463 int StackLocalCount() const; |
| 462 int ContextLocalCount() const; | 464 int ContextLocalCount() const; |
| 465 int ContextGlobalCount() const; |
| 463 | 466 |
| 464 // For script scopes, the number of module literals (including nested ones). | 467 // For script scopes, the number of module literals (including nested ones). |
| 465 int num_modules() const { return num_modules_; } | 468 int num_modules() const { return num_modules_; } |
| 466 | 469 |
| 467 // For module scopes, the host scope's internal variable binding this module. | 470 // For module scopes, the host scope's internal variable binding this module. |
| 468 Variable* module_var() const { return module_var_; } | 471 Variable* module_var() const { return module_var_; } |
| 469 | 472 |
| 470 // Make sure this scope and all outer scopes are eagerly compiled. | 473 // Make sure this scope and all outer scopes are eagerly compiled. |
| 471 void ForceEagerCompilation() { force_eager_compilation_ = true; } | 474 void ForceEagerCompilation() { force_eager_compilation_ = true; } |
| 472 | 475 |
| (...skipping 146 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 619 // True if it doesn't need scope resolution (e.g., if the scope was | 622 // True if it doesn't need scope resolution (e.g., if the scope was |
| 620 // constructed based on a serialized scope info or a catch context). | 623 // constructed based on a serialized scope info or a catch context). |
| 621 bool already_resolved_; | 624 bool already_resolved_; |
| 622 | 625 |
| 623 // Computed as variables are declared. | 626 // Computed as variables are declared. |
| 624 int num_var_or_const_; | 627 int num_var_or_const_; |
| 625 | 628 |
| 626 // Computed via AllocateVariables; function, block and catch scopes only. | 629 // Computed via AllocateVariables; function, block and catch scopes only. |
| 627 int num_stack_slots_; | 630 int num_stack_slots_; |
| 628 int num_heap_slots_; | 631 int num_heap_slots_; |
| 632 int num_global_slots_; |
| 629 | 633 |
| 630 // The number of modules (including nested ones). | 634 // The number of modules (including nested ones). |
| 631 int num_modules_; | 635 int num_modules_; |
| 632 | 636 |
| 633 // For module scopes, the host scope's internal variable binding this module. | 637 // For module scopes, the host scope's internal variable binding this module. |
| 634 Variable* module_var_; | 638 Variable* module_var_; |
| 635 | 639 |
| 636 // Rest parameter | 640 // Rest parameter |
| 637 Variable* rest_parameter_; | 641 Variable* rest_parameter_; |
| 638 int rest_index_; | 642 int rest_index_; |
| (...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 715 // Predicates. | 719 // Predicates. |
| 716 bool MustAllocate(Variable* var); | 720 bool MustAllocate(Variable* var); |
| 717 bool MustAllocateInContext(Variable* var); | 721 bool MustAllocateInContext(Variable* var); |
| 718 bool HasArgumentsParameter(Isolate* isolate); | 722 bool HasArgumentsParameter(Isolate* isolate); |
| 719 | 723 |
| 720 // Variable allocation. | 724 // Variable allocation. |
| 721 void AllocateStackSlot(Variable* var); | 725 void AllocateStackSlot(Variable* var); |
| 722 void AllocateHeapSlot(Variable* var); | 726 void AllocateHeapSlot(Variable* var); |
| 723 void AllocateParameterLocals(Isolate* isolate); | 727 void AllocateParameterLocals(Isolate* isolate); |
| 724 void AllocateNonParameterLocal(Isolate* isolate, Variable* var); | 728 void AllocateNonParameterLocal(Isolate* isolate, Variable* var); |
| 725 void AllocateNonParameterLocals(Isolate* isolate); | 729 void AllocateDeclaredGlobal(Isolate* isolate, Variable* var); |
| 730 void AllocateNonParameterLocalsAndDeclaredGlobals(Isolate* isolate); |
| 726 void AllocateVariablesRecursively(Isolate* isolate); | 731 void AllocateVariablesRecursively(Isolate* isolate); |
| 727 void AllocateParameter(Variable* var, int index); | 732 void AllocateParameter(Variable* var, int index); |
| 728 void AllocateReceiver(); | 733 void AllocateReceiver(); |
| 729 void AllocateModules(); | 734 void AllocateModules(); |
| 730 | 735 |
| 731 // Resolve and fill in the allocation information for all variables | 736 // Resolve and fill in the allocation information for all variables |
| 732 // in this scopes. Must be called *after* all scopes have been | 737 // in this scopes. Must be called *after* all scopes have been |
| 733 // processed (parsed) to ensure that unresolved variables can be | 738 // processed (parsed) to ensure that unresolved variables can be |
| 734 // resolved properly. | 739 // resolved properly. |
| 735 // | 740 // |
| (...skipping 29 matching lines...) Expand all Loading... |
| 765 PendingCompilationErrorHandler pending_error_handler_; | 770 PendingCompilationErrorHandler pending_error_handler_; |
| 766 | 771 |
| 767 // For tracking which classes are declared consecutively. Needed for strong | 772 // For tracking which classes are declared consecutively. Needed for strong |
| 768 // mode. | 773 // mode. |
| 769 int class_declaration_group_start_; | 774 int class_declaration_group_start_; |
| 770 }; | 775 }; |
| 771 | 776 |
| 772 } } // namespace v8::internal | 777 } } // namespace v8::internal |
| 773 | 778 |
| 774 #endif // V8_SCOPES_H_ | 779 #endif // V8_SCOPES_H_ |
| OLD | NEW |