| Index: src/scopeinfo.cc
|
| diff --git a/src/scopeinfo.cc b/src/scopeinfo.cc
|
| index 02b4323980f30218e51059a5ebc287fd64c72b09..c9fd56d3a6abcec5778ca4d8a3a3121bcc756972 100644
|
| --- a/src/scopeinfo.cc
|
| +++ b/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,33 @@ void ScopeInfo::Print() {
|
| }
|
| #endif // DEBUG
|
|
|
| +
|
| +//---------------------------------------------------------------------------
|
| +// ModuleDescription.
|
| +
|
| +Handle<ModuleDescription> ModuleDescription::Create(
|
| + Isolate* isolate, Interface* interface, Scope* scope) {
|
| + Handle<ModuleDescription> description =
|
| + Allocate(isolate, interface->Length());
|
| + description->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());
|
| + description->set_name(i, *it.name());
|
| + description->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);
|
| + description->set_index(i, it.interface()->Index());
|
| + } else {
|
| + ASSERT(var->index() >= 0);
|
| + description->set_index(i, var->index());
|
| + }
|
| + }
|
| + ASSERT(i == description->length());
|
| + return description;
|
| +}
|
| +
|
| } } // namespace v8::internal
|
|
|