| Index: src/objects-inl.h | 
| diff --git a/src/objects-inl.h b/src/objects-inl.h | 
| index 1dde60df546fc85ec110f2a5f5ef47381589dd99..cdfa0773bfedd8fb7e7b91b98b338cf00803de85 100644 | 
| --- a/src/objects-inl.h | 
| +++ b/src/objects-inl.h | 
| @@ -5234,10 +5234,17 @@ bool Code::IsWeakObjectInOptimizedCode(Object* object) { | 
| return Map::cast(object)->CanTransition() && | 
| FLAG_weak_embedded_maps_in_optimized_code; | 
| } | 
| -  if (object->IsJSObject() || | 
| -      (object->IsCell() && Cell::cast(object)->value()->IsJSObject())) { | 
| +  if (object->IsCell()) object = Cell::cast(object)->value(); | 
| +  if (object->IsJSObject()) { | 
| return FLAG_weak_embedded_objects_in_optimized_code; | 
| } | 
| +  if (object->IsFixedArray()) { | 
| +    // Contexts of inlined functions are embedded in optimized code. | 
| +    Map* map = HeapObject::cast(object)->map(); | 
| +    Heap* heap = map->GetHeap(); | 
| +    return FLAG_weak_embedded_objects_in_optimized_code && | 
| +           map == heap->function_context_map(); | 
| +  } | 
| return false; | 
| } | 
|  | 
|  |