| 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_AST_SCOPES_H_ | 5 #ifndef V8_AST_SCOPES_H_ |
| 6 #define V8_AST_SCOPES_H_ | 6 #define V8_AST_SCOPES_H_ |
| 7 | 7 |
| 8 #include "src/base/hashmap.h" | 8 #include "src/base/hashmap.h" |
| 9 #include "src/globals.h" | 9 #include "src/globals.h" |
| 10 #include "src/objects.h" | 10 #include "src/objects.h" |
| (...skipping 397 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 408 | 408 |
| 409 // Check that all Scopes in the scope tree use the same Zone. | 409 // Check that all Scopes in the scope tree use the same Zone. |
| 410 void CheckZones(); | 410 void CheckZones(); |
| 411 #endif | 411 #endif |
| 412 | 412 |
| 413 // Retrieve `IsSimpleParameterList` of current or outer function. | 413 // Retrieve `IsSimpleParameterList` of current or outer function. |
| 414 bool HasSimpleParameters(); | 414 bool HasSimpleParameters(); |
| 415 void set_is_debug_evaluate_scope() { is_debug_evaluate_scope_ = true; } | 415 void set_is_debug_evaluate_scope() { is_debug_evaluate_scope_ = true; } |
| 416 bool is_debug_evaluate_scope() const { return is_debug_evaluate_scope_; } | 416 bool is_debug_evaluate_scope() const { return is_debug_evaluate_scope_; } |
| 417 | 417 |
| 418 bool is_lazily_parsed() const { return is_lazily_parsed_; } |
| 418 void set_is_lazily_parsed(bool is_lazily_parsed) { | 419 void set_is_lazily_parsed(bool is_lazily_parsed) { |
| 419 is_lazily_parsed_ = is_lazily_parsed; | 420 is_lazily_parsed_ = is_lazily_parsed; |
| 420 } | 421 } |
| 421 | 422 |
| 422 protected: | 423 protected: |
| 423 explicit Scope(Zone* zone); | 424 explicit Scope(Zone* zone); |
| 424 | 425 |
| 425 void set_language_mode(LanguageMode language_mode) { | 426 void set_language_mode(LanguageMode language_mode) { |
| 426 is_strict_ = is_strict(language_mode); | 427 is_strict_ = is_strict(language_mode); |
| 427 } | 428 } |
| (...skipping 344 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 772 // Compute top scope and allocate variables. For lazy compilation the top | 773 // Compute top scope and allocate variables. For lazy compilation the top |
| 773 // scope only contains the single lazily compiled function, so this | 774 // scope only contains the single lazily compiled function, so this |
| 774 // doesn't re-allocate variables repeatedly. | 775 // doesn't re-allocate variables repeatedly. |
| 775 static void Analyze(ParseInfo* info, AnalyzeMode mode); | 776 static void Analyze(ParseInfo* info, AnalyzeMode mode); |
| 776 | 777 |
| 777 // To be called during parsing. Do just enough scope analysis that we can | 778 // To be called during parsing. Do just enough scope analysis that we can |
| 778 // discard the Scope for lazily compiled functions. In particular, this | 779 // discard the Scope for lazily compiled functions. In particular, this |
| 779 // records variables which cannot be resolved inside the Scope (we don't yet | 780 // records variables which cannot be resolved inside the Scope (we don't yet |
| 780 // know what they will resolve to since the outer Scopes are incomplete) and | 781 // know what they will resolve to since the outer Scopes are incomplete) and |
| 781 // migrates them into migrate_to. | 782 // migrates them into migrate_to. |
| 782 void AnalyzePartially(DeclarationScope* migrate_to, | 783 void AnalyzePartially(AstNodeFactory* ast_node_factory); |
| 783 AstNodeFactory* ast_node_factory); | |
| 784 | 784 |
| 785 Handle<StringSet> CollectNonLocals(ParseInfo* info, | 785 Handle<StringSet> CollectNonLocals(ParseInfo* info, |
| 786 Handle<StringSet> non_locals); | 786 Handle<StringSet> non_locals); |
| 787 | 787 |
| 788 // Determine if we can use lazy compilation for this scope. | 788 // Determine if we can use lazy compilation for this scope. |
| 789 bool AllowsLazyCompilation() const; | 789 bool AllowsLazyCompilation() const; |
| 790 | 790 |
| 791 // Determine if we can use lazy compilation for this scope without a context. | 791 // Determine if we can use lazy compilation for this scope without a context. |
| 792 bool AllowsLazyCompilationWithoutContext() const; | 792 bool AllowsLazyCompilationWithoutContext() const; |
| 793 | 793 |
| (...skipping 19 matching lines...) Expand all Loading... |
| 813 decls_.Clear(); | 813 decls_.Clear(); |
| 814 locals_.Clear(); | 814 locals_.Clear(); |
| 815 params_.Clear(); | 815 params_.Clear(); |
| 816 sloppy_block_function_map_.Clear(); | 816 sloppy_block_function_map_.Clear(); |
| 817 variables_.Clear(); | 817 variables_.Clear(); |
| 818 // Make sure we won't walk the scope tree from here on. | 818 // Make sure we won't walk the scope tree from here on. |
| 819 inner_scope_ = nullptr; | 819 inner_scope_ = nullptr; |
| 820 // Make sure we won't try to allocate the rest parameter. {params_} was | 820 // Make sure we won't try to allocate the rest parameter. {params_} was |
| 821 // cleared above. | 821 // cleared above. |
| 822 has_rest_ = false; | 822 has_rest_ = false; |
| 823 unresolved_ = nullptr; |
| 823 } | 824 } |
| 824 | 825 |
| 825 private: | 826 private: |
| 826 void AllocateParameter(Variable* var, int index); | 827 void AllocateParameter(Variable* var, int index); |
| 827 | 828 |
| 828 // Resolve and fill in the allocation information for all variables | 829 // Resolve and fill in the allocation information for all variables |
| 829 // in this scopes. Must be called *after* all scopes have been | 830 // in this scopes. Must be called *after* all scopes have been |
| 830 // processed (parsed) to ensure that unresolved variables can be | 831 // processed (parsed) to ensure that unresolved variables can be |
| 831 // resolved properly. | 832 // resolved properly. |
| 832 // | 833 // |
| (...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 893 void AllocateModuleVariables(); | 894 void AllocateModuleVariables(); |
| 894 | 895 |
| 895 private: | 896 private: |
| 896 ModuleDescriptor* module_descriptor_; | 897 ModuleDescriptor* module_descriptor_; |
| 897 }; | 898 }; |
| 898 | 899 |
| 899 } // namespace internal | 900 } // namespace internal |
| 900 } // namespace v8 | 901 } // namespace v8 |
| 901 | 902 |
| 902 #endif // V8_AST_SCOPES_H_ | 903 #endif // V8_AST_SCOPES_H_ |
| OLD | NEW |