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

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

Issue 2398023002: [wasm] asm.js - Parse and convert asm.js to wasm a function at a time. (Closed)
Patch Set: fix Created 4 years 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 | « src/asmjs/asm-wasm-builder.cc ('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"
(...skipping 405 matching lines...) Expand 10 before | Expand all | Expand 10 after
416 416
417 // Check that all Scopes in the scope tree use the same Zone. 417 // Check that all Scopes in the scope tree use the same Zone.
418 void CheckZones(); 418 void CheckZones();
419 #endif 419 #endif
420 420
421 // Retrieve `IsSimpleParameterList` of current or outer function. 421 // Retrieve `IsSimpleParameterList` of current or outer function.
422 bool HasSimpleParameters(); 422 bool HasSimpleParameters();
423 void set_is_debug_evaluate_scope() { is_debug_evaluate_scope_ = true; } 423 void set_is_debug_evaluate_scope() { is_debug_evaluate_scope_ = true; }
424 bool is_debug_evaluate_scope() const { return is_debug_evaluate_scope_; } 424 bool is_debug_evaluate_scope() const { return is_debug_evaluate_scope_; }
425 425
426 bool RemoveInnerScope(Scope* inner_scope) {
427 DCHECK_NOT_NULL(inner_scope);
428 if (inner_scope == inner_scope_) {
429 inner_scope_ = inner_scope_->sibling_;
430 return true;
431 }
432 for (Scope* scope = inner_scope_; scope != nullptr;
433 scope = scope->sibling_) {
434 if (scope->sibling_ == inner_scope) {
435 scope->sibling_ = scope->sibling_->sibling_;
436 return true;
437 }
438 }
439 return false;
440 }
441
426 protected: 442 protected:
427 explicit Scope(Zone* zone); 443 explicit Scope(Zone* zone);
428 444
429 void set_language_mode(LanguageMode language_mode) { 445 void set_language_mode(LanguageMode language_mode) {
430 is_strict_ = is_strict(language_mode); 446 is_strict_ = is_strict(language_mode);
431 } 447 }
432 448
433 private: 449 private:
434 Variable* Declare(Zone* zone, const AstRawString* name, VariableMode mode, 450 Variable* Declare(Zone* zone, const AstRawString* name, VariableMode mode,
435 VariableKind kind, InitializationFlag initialization_flag, 451 VariableKind kind, InitializationFlag initialization_flag,
(...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after
553 // Construct a catch scope with a binding for the name. 569 // Construct a catch scope with a binding for the name.
554 Scope(Zone* zone, const AstRawString* catch_variable_name, 570 Scope(Zone* zone, const AstRawString* catch_variable_name,
555 Handle<ScopeInfo> scope_info); 571 Handle<ScopeInfo> scope_info);
556 572
557 void AddInnerScope(Scope* inner_scope) { 573 void AddInnerScope(Scope* inner_scope) {
558 inner_scope->sibling_ = inner_scope_; 574 inner_scope->sibling_ = inner_scope_;
559 inner_scope_ = inner_scope; 575 inner_scope_ = inner_scope;
560 inner_scope->outer_scope_ = this; 576 inner_scope->outer_scope_ = this;
561 } 577 }
562 578
563 void RemoveInnerScope(Scope* inner_scope) {
564 DCHECK_NOT_NULL(inner_scope);
565 if (inner_scope == inner_scope_) {
566 inner_scope_ = inner_scope_->sibling_;
567 return;
568 }
569 for (Scope* scope = inner_scope_; scope != nullptr;
570 scope = scope->sibling_) {
571 if (scope->sibling_ == inner_scope) {
572 scope->sibling_ = scope->sibling_->sibling_;
573 return;
574 }
575 }
576 }
577
578 void SetDefaults(); 579 void SetDefaults();
579 580
580 friend class DeclarationScope; 581 friend class DeclarationScope;
581 }; 582 };
582 583
583 class DeclarationScope : public Scope { 584 class DeclarationScope : public Scope {
584 public: 585 public:
585 DeclarationScope(Zone* zone, Scope* outer_scope, ScopeType scope_type, 586 DeclarationScope(Zone* zone, Scope* outer_scope, ScopeType scope_type,
586 FunctionKind function_kind = kNormalFunction); 587 FunctionKind function_kind = kNormalFunction);
587 DeclarationScope(Zone* zone, ScopeType scope_type, 588 DeclarationScope(Zone* zone, ScopeType scope_type,
(...skipping 269 matching lines...) Expand 10 before | Expand all | Expand 10 after
857 void AllocateModuleVariables(); 858 void AllocateModuleVariables();
858 859
859 private: 860 private:
860 ModuleDescriptor* module_descriptor_; 861 ModuleDescriptor* module_descriptor_;
861 }; 862 };
862 863
863 } // namespace internal 864 } // namespace internal
864 } // namespace v8 865 } // namespace v8
865 866
866 #endif // V8_AST_SCOPES_H_ 867 #endif // V8_AST_SCOPES_H_
OLDNEW
« no previous file with comments | « src/asmjs/asm-wasm-builder.cc ('k') | src/ast/scopes.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698