| Index: src/code-stubs-hydrogen.cc
 | 
| diff --git a/src/code-stubs-hydrogen.cc b/src/code-stubs-hydrogen.cc
 | 
| index f1b4cb41771a7a76ba59d7f08b87747e87977f44..1d2fb811fbb2c2f007c00ed36ddbcf70e2842afa 100644
 | 
| --- a/src/code-stubs-hydrogen.cc
 | 
| +++ b/src/code-stubs-hydrogen.cc
 | 
| @@ -794,9 +794,15 @@ HValue* CodeStubGraphBuilderBase::BuildPushElement(HValue* object, HValue* argc,
 | 
|      {
 | 
|        HInstruction* argument =
 | 
|            Add<HAccessArgumentsAt>(argument_elements, argc, key);
 | 
| -      Representation r = IsFastSmiElementsKind(kind) ? Representation::Smi()
 | 
| -                                                     : Representation::Double();
 | 
| -      AddUncasted<HForceRepresentation>(argument, r);
 | 
| +      IfBuilder can_store(this);
 | 
| +      can_store.IfNot<HIsSmiAndBranch>(argument);
 | 
| +      if (IsFastDoubleElementsKind(kind)) {
 | 
| +        can_store.And();
 | 
| +        can_store.IfNot<HCompareMap>(argument,
 | 
| +                                     isolate()->factory()->heap_number_map());
 | 
| +      }
 | 
| +      can_store.ThenDeopt(Deoptimizer::kFastArrayPushFailed);
 | 
| +      can_store.End();
 | 
|      }
 | 
|      builder.EndBody();
 | 
|    }
 | 
| 
 |