| 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 = | 
|  |