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

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

Issue 2274133002: Add function-var to variables_ so LookupRecursive doesn't need to special-case it (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Update comments 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') | src/parsing/parser.cc » ('J')
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 619 matching lines...) Expand 10 before | Expand all | Expand 10 after
630 630
631 bool asm_module() const { return asm_module_; } 631 bool asm_module() const { return asm_module_; }
632 void set_asm_module(); 632 void set_asm_module();
633 bool asm_function() const { return asm_function_; } 633 bool asm_function() const { return asm_function_; }
634 void set_asm_function() { asm_module_ = true; } 634 void set_asm_function() { asm_module_ = true; }
635 635
636 void DeclareThis(AstValueFactory* ast_value_factory); 636 void DeclareThis(AstValueFactory* ast_value_factory);
637 void DeclareArguments(AstValueFactory* ast_value_factory); 637 void DeclareArguments(AstValueFactory* ast_value_factory);
638 void DeclareDefaultFunctionVariables(AstValueFactory* ast_value_factory); 638 void DeclareDefaultFunctionVariables(AstValueFactory* ast_value_factory);
639 639
640 // This lookup corresponds to a lookup in the "intermediate" scope sitting
641 // between this scope and the outer scope. (ECMA-262, 3rd., requires that
642 // the name of named function literal is kept in an intermediate scope
643 // in between this scope and the next outer scope.)
644 Variable* LookupFunctionVar(const AstRawString* name);
645
646 // Declare the function variable for a function literal. This variable 640 // Declare the function variable for a function literal. This variable
647 // is in an intermediate scope between this function scope and the the 641 // is in an intermediate scope between this function scope and the the
648 // outer scope. Only possible for function scopes; at most one variable. 642 // outer scope. Only possible for function scopes; at most one variable.
643 //
644 // This function needs to be called after all other variables have been
645 // declared in the scope. It will add a variable for {name} to {variables_};
646 // either the function variable itself, or a non-local in case the function
647 // calls sloppy eval.
649 Variable* DeclareFunctionVar(const AstRawString* name); 648 Variable* DeclareFunctionVar(const AstRawString* name);
650 649
651 // Declare a parameter in this scope. When there are duplicated 650 // Declare a parameter in this scope. When there are duplicated
652 // parameters the rightmost one 'wins'. However, the implementation 651 // parameters the rightmost one 'wins'. However, the implementation
653 // expects all parameters to be declared and from left to right. 652 // expects all parameters to be declared and from left to right.
654 Variable* DeclareParameter(const AstRawString* name, VariableMode mode, 653 Variable* DeclareParameter(const AstRawString* name, VariableMode mode,
655 bool is_optional, bool is_rest, bool* is_duplicate, 654 bool is_optional, bool is_rest, bool* is_duplicate,
656 AstValueFactory* ast_value_factory); 655 AstValueFactory* ast_value_factory);
657 656
658 // Declare an implicit global variable in this scope which must be a 657 // Declare an implicit global variable in this scope which must be a
(...skipping 213 matching lines...) Expand 10 before | Expand all | Expand 10 after
872 void AllocateModuleVariables(); 871 void AllocateModuleVariables();
873 872
874 private: 873 private:
875 ModuleDescriptor* module_descriptor_; 874 ModuleDescriptor* module_descriptor_;
876 }; 875 };
877 876
878 } // namespace internal 877 } // namespace internal
879 } // namespace v8 878 } // namespace v8
880 879
881 #endif // V8_AST_SCOPES_H_ 880 #endif // V8_AST_SCOPES_H_
OLDNEW
« no previous file with comments | « no previous file | src/ast/scopes.cc » ('j') | src/parsing/parser.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698