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

Unified Diff: src/ast/scopes.h

Issue 2664083002: [ignition] desugar async functions/generators/modules in BytecodeGenerator
Patch Set: get rid of lambdas, for better or worse.. Created 3 years, 10 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 side-by-side diff with in-line comments
Download patch
Index: src/ast/scopes.h
diff --git a/src/ast/scopes.h b/src/ast/scopes.h
index a1661d122618e1f6293cb664e3646afda3b6f708..f761cb747a733e37960a4e4ae49df515286db317 100644
--- a/src/ast/scopes.h
+++ b/src/ast/scopes.h
@@ -152,7 +152,7 @@ class V8_EXPORT_PRIVATE Scope : public NON_EXPORTED_BASE(ZoneObject) {
Zone* zone() const { return zone_; }
- // ---------------------------------------------------------------------------
+ // ------------------/---------------------------------------------------------
// Declarations
// Lookup a variable in this scope. Returns the variable or NULL if not found.
@@ -428,6 +428,8 @@ class V8_EXPORT_PRIVATE Scope : public NON_EXPORTED_BASE(ZoneObject) {
int num_var() const { return variables_.occupancy(); }
+ bool HasLazilyParsedInnerFunctionScope() const;
+
// ---------------------------------------------------------------------------
// Debugging.
@@ -679,6 +681,11 @@ class DeclarationScope : public Scope {
// calls sloppy eval.
Variable* DeclareFunctionVar(const AstRawString* name);
+ // Declare some special internal variables which must be accessible to
+ // Ignition without ScopeInfo.
+ Variable* DeclareGeneratorObjectVar(const AstRawString* name);
+ Variable* DeclarePromiseVar(const AstRawString* name);
+
// Declare a parameter in this scope. When there are duplicated
// parameters the rightmost one 'wins'. However, the implementation
// expects all parameters to be declared and from left to right.
@@ -717,6 +724,17 @@ class DeclarationScope : public Scope {
return function_;
}
+ Variable* generator_object_var() const {
+ DCHECK(is_function_scope() || is_module_scope());
+ return generator_object_;
+ }
+
+ Variable* promise_var() const {
+ DCHECK(is_function_scope());
+ DCHECK(IsAsyncFunction(function_kind_));
+ return promise_;
+ }
+
// Parameters. The left-most parameter has index 0.
// Only valid for function and module scopes.
Variable* parameter(int index) const {
@@ -873,6 +891,11 @@ class DeclarationScope : public Scope {
Variable* arguments_;
// Convenience variable; Subclass constructor only
Variable* this_function_;
+
+ // Generator object, if any; generator function scopes and module scopes only.
+ Variable* generator_object_;
+ // Promise, if any; async function scopes only.
+ Variable* promise_;
};
class ModuleScope final : public DeclarationScope {

Powered by Google App Engine
This is Rietveld 408576698