diff options
author | Fedor Indutny <fedor.indutny@gmail.com> | 2013-01-01 12:28:07 +0400 |
---|---|---|
committer | Fedor Indutny <fedor.indutny@gmail.com> | 2013-01-01 16:07:02 +0400 |
commit | 7b4d95a976f1b76e6dcefb6ca91dff738c80ab7a (patch) | |
tree | 1eb943733a2e660fc0183778fd441443e06196e2 /deps/v8/src/scopeinfo.cc | |
parent | 9e32c2ef3ede29ba0ae2086bdf658f6cd44182df (diff) | |
download | node-7b4d95a976f1b76e6dcefb6ca91dff738c80ab7a.tar.gz |
deps: update v8 to 3.15.11
Diffstat (limited to 'deps/v8/src/scopeinfo.cc')
-rw-r--r-- | deps/v8/src/scopeinfo.cc | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/deps/v8/src/scopeinfo.cc b/deps/v8/src/scopeinfo.cc index 02b432398..c0b2c4c8e 100644 --- a/deps/v8/src/scopeinfo.cc +++ b/deps/v8/src/scopeinfo.cc @@ -321,6 +321,7 @@ int ScopeInfo::ContextSlotIndex(String* name, return result; } } + // Cache as not found. Mode and init flag don't matter. context_slot_cache->Update(this, name, INTERNAL, kNeedsInitialization, -1); } return -1; @@ -504,4 +505,32 @@ void ScopeInfo::Print() { } #endif // DEBUG + +//--------------------------------------------------------------------------- +// ModuleInfo. + +Handle<ModuleInfo> ModuleInfo::Create( + Isolate* isolate, Interface* interface, Scope* scope) { + Handle<ModuleInfo> info = Allocate(isolate, interface->Length()); + info->set_host_index(interface->Index()); + int i = 0; + for (Interface::Iterator it = interface->iterator(); + !it.done(); it.Advance(), ++i) { + Variable* var = scope->LocalLookup(it.name()); + info->set_name(i, *it.name()); + info->set_mode(i, var->mode()); + ASSERT((var->mode() == MODULE) == (it.interface()->IsModule())); + if (var->mode() == MODULE) { + ASSERT(it.interface()->IsFrozen()); + ASSERT(it.interface()->Index() >= 0); + info->set_index(i, it.interface()->Index()); + } else { + ASSERT(var->index() >= 0); + info->set_index(i, var->index()); + } + } + ASSERT(i == info->length()); + return info; +} + } } // namespace v8::internal |