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

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

Issue 2351823005: Only create ScopeInfos for scopes that really need one (Closed)
Patch Set: updates Created 4 years, 3 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 | « no previous file | 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/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 426 matching lines...) Expand 10 before | Expand all | Expand 10 after
437 437
438 // This method should only be invoked on scopes created during parsing (i.e., 438 // This method should only be invoked on scopes created during parsing (i.e.,
439 // not deserialized from a context). Also, since NeedsContext() is only 439 // not deserialized from a context). Also, since NeedsContext() is only
440 // returning a valid result after variables are resolved, NeedsScopeInfo() 440 // returning a valid result after variables are resolved, NeedsScopeInfo()
441 // should also be invoked after resolution. 441 // should also be invoked after resolution.
442 bool NeedsScopeInfo() const { 442 bool NeedsScopeInfo() const {
443 DCHECK(!already_resolved_); 443 DCHECK(!already_resolved_);
444 // A lazily parsed scope doesn't contain enough information to create a 444 // A lazily parsed scope doesn't contain enough information to create a
445 // ScopeInfo from it. 445 // ScopeInfo from it.
446 if (is_lazily_parsed_) return false; 446 if (is_lazily_parsed_) return false;
447 return NeedsContext() || is_script_scope() || is_function_scope() || 447 // The debugger expects all functions to have scope infos.
448 is_eval_scope() || is_module_scope(); 448 // TODO(jochen|yangguo): Remove this requirement.
449 if (is_function_scope()) return true;
450 return NeedsContext();
449 } 451 }
450 452
451 Zone* zone_; 453 Zone* zone_;
452 454
453 // Scope tree. 455 // Scope tree.
454 Scope* outer_scope_; // the immediately enclosing outer scope, or NULL 456 Scope* outer_scope_; // the immediately enclosing outer scope, or NULL
455 Scope* inner_scope_; // an inner scope of this scope 457 Scope* inner_scope_; // an inner scope of this scope
456 Scope* sibling_; // a sibling inner scope of the outer scope of this scope. 458 Scope* sibling_; // a sibling inner scope of the outer scope of this scope.
457 459
458 // The variables declared in this scope: 460 // The variables declared in this scope:
(...skipping 414 matching lines...) Expand 10 before | Expand all | Expand 10 after
873 void AllocateModuleVariables(); 875 void AllocateModuleVariables();
874 876
875 private: 877 private:
876 ModuleDescriptor* module_descriptor_; 878 ModuleDescriptor* module_descriptor_;
877 }; 879 };
878 880
879 } // namespace internal 881 } // namespace internal
880 } // namespace v8 882 } // namespace v8
881 883
882 #endif // V8_AST_SCOPES_H_ 884 #endif // V8_AST_SCOPES_H_
OLDNEW
« no previous file with comments | « no previous file | src/ast/scopes.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698