Chromium Code Reviews| Index: src/scopes.cc |
| diff --git a/src/scopes.cc b/src/scopes.cc |
| index 963d539afb96e664e8b2f063a14f7e85ee03048f..511cda265a18dc56f98e0d317d58cf32246d43a7 100644 |
| --- a/src/scopes.cc |
| +++ b/src/scopes.cc |
| @@ -66,6 +66,30 @@ Variable* VariableMap::Lookup(const AstRawString* name) { |
| } |
| +SloppyBlockFunctionMap::SloppyBlockFunctionMap(Zone* zone) |
| + : ZoneHashMap(ZoneHashMap::PointersMatch, 8, ZoneAllocationPolicy(zone)), |
| + zone_(zone) {} |
| +SloppyBlockFunctionMap::~SloppyBlockFunctionMap() {} |
| + |
| + |
| +void SloppyBlockFunctionMap::Declare(const AstRawString* name, |
| + DelegateStatement* stmt) { |
| + // AstRawStrings are unambiguous, i.e., the same string is always represented |
| + // by the same AstRawString*. |
| + // FIXME(marja): fix the type of Lookup. |
|
adamk
2015/09/11 15:42:56
What's this TODO about? The return value seems fin
Dan Ehrenberg
2015/09/17 17:44:10
I think it's about using the hash. I copied it fro
|
| + Entry* p = |
| + ZoneHashMap::LookupOrInsert(const_cast<AstRawString*>(name), name->hash(), |
| + ZoneAllocationPolicy(zone_)); |
| + if (!p->value) { |
|
adamk
2015/09/11 15:42:56
Nit: p->value == nullptr is the v8 style here, gen
Dan Ehrenberg
2015/09/17 17:44:10
Done
|
| + p->value = new (zone_->New(sizeof(ZoneVector<DelegateStatement*>))) |
|
adamk
2015/09/11 15:42:56
Might be worth typedefing ZoneVector<DelegateState
Dan Ehrenberg
2015/09/17 17:44:10
Done
|
| + ZoneVector<DelegateStatement*>(zone_); |
| + } |
| + ZoneVector<DelegateStatement*>* delegates = |
| + reinterpret_cast<ZoneVector<DelegateStatement*>*>(p->value); |
| + delegates->push_back(stmt); |
| +} |
| + |
| + |
| // ---------------------------------------------------------------------------- |
| // Implementation of Scope |
| @@ -79,6 +103,7 @@ Scope::Scope(Zone* zone, Scope* outer_scope, ScopeType scope_type, |
| decls_(4, zone), |
| module_descriptor_( |
| scope_type == MODULE_SCOPE ? ModuleDescriptor::New(zone) : NULL), |
| + sloppy_block_function_map_(zone), |
| already_resolved_(false), |
| ast_value_factory_(ast_value_factory), |
| zone_(zone), |
| @@ -100,6 +125,7 @@ Scope::Scope(Zone* zone, Scope* inner_scope, ScopeType scope_type, |
| unresolved_(16, zone), |
| decls_(4, zone), |
| module_descriptor_(NULL), |
| + sloppy_block_function_map_(zone), |
| already_resolved_(true), |
| ast_value_factory_(value_factory), |
| zone_(zone), |
| @@ -125,6 +151,7 @@ Scope::Scope(Zone* zone, Scope* inner_scope, |
| unresolved_(0, zone), |
| decls_(0, zone), |
| module_descriptor_(NULL), |
| + sloppy_block_function_map_(zone), |
| already_resolved_(true), |
| ast_value_factory_(value_factory), |
| zone_(zone), |