Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(550)

Side by Side Diff: src/ast/scopes.h

Issue 2650703003: [parser]: Skipping inner funcs / initial implemetation of storing scope analysis data from preparse… (Closed)
Patch Set: rebased - argh, forced to format build.gn Created 3 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « BUILD.gn ('k') | src/ast/scopes.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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/compiler-specific.h" 8 #include "src/base/compiler-specific.h"
9 #include "src/base/hashmap.h" 9 #include "src/base/hashmap.h"
10 #include "src/globals.h" 10 #include "src/globals.h"
11 #include "src/objects.h" 11 #include "src/objects.h"
12 #include "src/zone/zone.h" 12 #include "src/zone/zone.h"
13 13
14 namespace v8 { 14 namespace v8 {
15 namespace internal { 15 namespace internal {
16 16
17 class AstNodeFactory; 17 class AstNodeFactory;
18 class AstValueFactory; 18 class AstValueFactory;
19 class AstRawString; 19 class AstRawString;
20 class Declaration; 20 class Declaration;
21 class ParseInfo; 21 class ParseInfo;
22 class PreParsedScopeData;
22 class SloppyBlockFunctionStatement; 23 class SloppyBlockFunctionStatement;
23 class Statement; 24 class Statement;
24 class StringSet; 25 class StringSet;
25 class VariableProxy; 26 class VariableProxy;
26 27
27 // A hash map to support fast variable declaration and lookup. 28 // A hash map to support fast variable declaration and lookup.
28 class VariableMap: public ZoneHashMap { 29 class VariableMap: public ZoneHashMap {
29 public: 30 public:
30 explicit VariableMap(Zone* zone); 31 explicit VariableMap(Zone* zone);
31 32
(...skipping 546 matching lines...) Expand 10 before | Expand all | Expand 10 after
578 void AllocateNonParameterLocal(Variable* var); 579 void AllocateNonParameterLocal(Variable* var);
579 void AllocateDeclaredGlobal(Variable* var); 580 void AllocateDeclaredGlobal(Variable* var);
580 void AllocateNonParameterLocalsAndDeclaredGlobals(); 581 void AllocateNonParameterLocalsAndDeclaredGlobals();
581 void AllocateVariablesRecursively(); 582 void AllocateVariablesRecursively();
582 583
583 void AllocateScopeInfosRecursively(Isolate* isolate, 584 void AllocateScopeInfosRecursively(Isolate* isolate,
584 MaybeHandle<ScopeInfo> outer_scope); 585 MaybeHandle<ScopeInfo> outer_scope);
585 void AllocateDebuggerScopeInfos(Isolate* isolate, 586 void AllocateDebuggerScopeInfos(Isolate* isolate,
586 MaybeHandle<ScopeInfo> outer_scope); 587 MaybeHandle<ScopeInfo> outer_scope);
587 588
589 void CollectVariableData(PreParsedScopeData* data);
590
588 // Construct a scope based on the scope info. 591 // Construct a scope based on the scope info.
589 Scope(Zone* zone, ScopeType type, Handle<ScopeInfo> scope_info); 592 Scope(Zone* zone, ScopeType type, Handle<ScopeInfo> scope_info);
590 593
591 // Construct a catch scope with a binding for the name. 594 // Construct a catch scope with a binding for the name.
592 Scope(Zone* zone, const AstRawString* catch_variable_name, 595 Scope(Zone* zone, const AstRawString* catch_variable_name,
593 Handle<ScopeInfo> scope_info); 596 Handle<ScopeInfo> scope_info);
594 597
595 void AddInnerScope(Scope* inner_scope) { 598 void AddInnerScope(Scope* inner_scope) {
596 inner_scope->sibling_ = inner_scope_; 599 inner_scope->sibling_ = inner_scope_;
597 inner_scope_ = inner_scope; 600 inner_scope_ = inner_scope;
(...skipping 183 matching lines...) Expand 10 before | Expand all | Expand 10 after
781 // Compute top scope and allocate variables. For lazy compilation the top 784 // Compute top scope and allocate variables. For lazy compilation the top
782 // scope only contains the single lazily compiled function, so this 785 // scope only contains the single lazily compiled function, so this
783 // doesn't re-allocate variables repeatedly. 786 // doesn't re-allocate variables repeatedly.
784 static void Analyze(ParseInfo* info, AnalyzeMode mode); 787 static void Analyze(ParseInfo* info, AnalyzeMode mode);
785 788
786 // To be called during parsing. Do just enough scope analysis that we can 789 // To be called during parsing. Do just enough scope analysis that we can
787 // discard the Scope for lazily compiled functions. In particular, this 790 // discard the Scope for lazily compiled functions. In particular, this
788 // records variables which cannot be resolved inside the Scope (we don't yet 791 // records variables which cannot be resolved inside the Scope (we don't yet
789 // know what they will resolve to since the outer Scopes are incomplete) and 792 // know what they will resolve to since the outer Scopes are incomplete) and
790 // migrates them into migrate_to. 793 // migrates them into migrate_to.
791 void AnalyzePartially(AstNodeFactory* ast_node_factory); 794 void AnalyzePartially(AstNodeFactory* ast_node_factory,
795 PreParsedScopeData* preparsed_scope_data);
792 796
793 Handle<StringSet> CollectNonLocals(ParseInfo* info, 797 Handle<StringSet> CollectNonLocals(ParseInfo* info,
794 Handle<StringSet> non_locals); 798 Handle<StringSet> non_locals);
795 799
796 // Determine if we can use lazy compilation for this scope. 800 // Determine if we can use lazy compilation for this scope.
797 bool AllowsLazyCompilation() const; 801 bool AllowsLazyCompilation() const;
798 802
799 // Make sure this closure and all outer closures are eagerly compiled. 803 // Make sure this closure and all outer closures are eagerly compiled.
800 void ForceEagerCompilation() { 804 void ForceEagerCompilation() {
801 DCHECK_EQ(this, GetClosureScope()); 805 DCHECK_EQ(this, GetClosureScope());
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
892 void AllocateModuleVariables(); 896 void AllocateModuleVariables();
893 897
894 private: 898 private:
895 ModuleDescriptor* module_descriptor_; 899 ModuleDescriptor* module_descriptor_;
896 }; 900 };
897 901
898 } // namespace internal 902 } // namespace internal
899 } // namespace v8 903 } // namespace v8
900 904
901 #endif // V8_AST_SCOPES_H_ 905 #endif // V8_AST_SCOPES_H_
OLDNEW
« no previous file with comments | « BUILD.gn ('k') | src/ast/scopes.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698