| Index: src/heap.cc
|
| diff --git a/src/heap.cc b/src/heap.cc
|
| index 66f7055d3e85d20e5168bc2749b4d5dfd971189e..a4b75d6f20acffab6792bfd0eab92101d5e4a0a6 100644
|
| --- a/src/heap.cc
|
| +++ b/src/heap.cc
|
| @@ -2441,6 +2441,12 @@ bool Heap::CreateInitialMaps() {
|
| AllocateMap(FIXED_ARRAY_TYPE, kVariableSizeSentinel);
|
| if (!maybe_obj->ToObject(&obj)) return false;
|
| }
|
| + set_global_context_map(Map::cast(obj));
|
| +
|
| + { MaybeObject* maybe_obj =
|
| + AllocateMap(FIXED_ARRAY_TYPE, kVariableSizeSentinel);
|
| + if (!maybe_obj->ToObject(&obj)) return false;
|
| + }
|
| Map* native_context_map = Map::cast(obj);
|
| native_context_map->set_dictionary_map(true);
|
| native_context_map->set_visitor_id(StaticVisitorBase::kVisitNativeContext);
|
| @@ -4905,6 +4911,23 @@ MaybeObject* Heap::AllocateNativeContext() {
|
| }
|
|
|
|
|
| +MaybeObject* Heap::AllocateGlobalContext(JSFunction* function,
|
| + ScopeInfo* scope_info) {
|
| + Object* result;
|
| + { MaybeObject* maybe_result =
|
| + AllocateFixedArray(scope_info->ContextLength(), TENURED);
|
| + if (!maybe_result->ToObject(&result)) return maybe_result;
|
| + }
|
| + Context* context = reinterpret_cast<Context*>(result);
|
| + context->set_map_no_write_barrier(global_context_map());
|
| + context->set_closure(function);
|
| + context->set_extension(scope_info);
|
| + ASSERT(context->IsGlobalContext());
|
| + ASSERT(result->IsContext());
|
| + return context;
|
| +}
|
| +
|
| +
|
| MaybeObject* Heap::AllocateModuleContext(ScopeInfo* scope_info) {
|
| Object* result;
|
| { MaybeObject* maybe_result =
|
|
|