| Index: src/hydrogen.cc
 | 
| diff --git a/src/hydrogen.cc b/src/hydrogen.cc
 | 
| index 54b5c12d97c5804d212e22d771dd59cfd3c2e6c8..c4671d54806ca9b5c1d48c02f96dfa2e9b0ef228 100644
 | 
| --- a/src/hydrogen.cc
 | 
| +++ b/src/hydrogen.cc
 | 
| @@ -1223,6 +1223,48 @@ HValue* HGraphBuilder::BuildCopyElementsOnWrite(HValue* object,
 | 
|  }
 | 
|  
 | 
|  
 | 
| +void HGraphBuilder::BuildTransitionElementsKind(HValue* object,
 | 
| +                                                HValue* map,
 | 
| +                                                ElementsKind from_kind,
 | 
| +                                                ElementsKind to_kind,
 | 
| +                                                bool is_jsarray) {
 | 
| +  ASSERT(!IsFastHoleyElementsKind(from_kind) ||
 | 
| +         IsFastHoleyElementsKind(to_kind));
 | 
| +
 | 
| +  if (AllocationSite::GetMode(from_kind, to_kind) == TRACK_ALLOCATION_SITE) {
 | 
| +    Add<HTrapAllocationMemento>(object);
 | 
| +  }
 | 
| +
 | 
| +  if (!IsSimpleMapChangeTransition(from_kind, to_kind)) {
 | 
| +    HInstruction* elements = AddLoadElements(object);
 | 
| +
 | 
| +    HInstruction* empty_fixed_array = Add<HConstant>(
 | 
| +        isolate()->factory()->empty_fixed_array(), Representation::Tagged());
 | 
| +
 | 
| +    IfBuilder if_builder(this);
 | 
| +
 | 
| +    if_builder.IfNot<HCompareObjectEqAndBranch>(elements, empty_fixed_array);
 | 
| +
 | 
| +    if_builder.Then();
 | 
| +
 | 
| +    HInstruction* elements_length = AddLoadFixedArrayLength(elements);
 | 
| +
 | 
| +    HInstruction* array_length = is_jsarray
 | 
| +        ? AddLoad(object, HObjectAccess::ForArrayLength(),
 | 
| +                  NULL, Representation::Smi())
 | 
| +        : elements_length;
 | 
| +    array_length->set_type(HType::Smi());
 | 
| +
 | 
| +    BuildGrowElementsCapacity(object, elements, from_kind, to_kind,
 | 
| +                              array_length, elements_length);
 | 
| +
 | 
| +    if_builder.End();
 | 
| +  }
 | 
| +
 | 
| +  AddStore(object, HObjectAccess::ForMap(), map);
 | 
| +}
 | 
| +
 | 
| +
 | 
|  HInstruction* HGraphBuilder::BuildUncheckedMonomorphicElementAccess(
 | 
|      HValue* object,
 | 
|      HValue* key,
 | 
| 
 |