| Index: src/objects.cc
 | 
| diff --git a/src/objects.cc b/src/objects.cc
 | 
| index 96a1aa19c9adf0e90b6f97899203a16336f645cb..ec31b72bd4bc20dbbc2717de2a0dc2e98ec508dc 100644
 | 
| --- a/src/objects.cc
 | 
| +++ b/src/objects.cc
 | 
| @@ -11267,10 +11267,8 @@ void Code::Disassemble(const char* name, std::ostream& os) {  // NOLINT
 | 
|  #endif  // ENABLE_DISASSEMBLER
 | 
|  
 | 
|  
 | 
| -Handle<FixedArray> JSObject::SetFastElementsCapacityAndLength(
 | 
| -    Handle<JSObject> object,
 | 
| -    int capacity,
 | 
| -    int length,
 | 
| +Handle<FixedArray> JSObject::SetFastElementsCapacity(
 | 
| +    Handle<JSObject> object, int capacity,
 | 
|      SetFastElementsCapacitySmiMode smi_mode) {
 | 
|    // We should never end in here with a pixel or external array.
 | 
|    DCHECK(!object->HasExternalArrayElements());
 | 
| @@ -11322,6 +11320,15 @@ Handle<FixedArray> JSObject::SetFastElementsCapacityAndLength(
 | 
|                              object->GetElementsKind(), new_elements);
 | 
|    }
 | 
|  
 | 
| +  return new_elements;
 | 
| +}
 | 
| +
 | 
| +
 | 
| +Handle<FixedArray> JSObject::SetFastElementsCapacityAndLength(
 | 
| +    Handle<JSObject> object, int capacity, int length,
 | 
| +    SetFastElementsCapacitySmiMode smi_mode) {
 | 
| +  Handle<FixedArray> new_elements =
 | 
| +      SetFastElementsCapacity(object, capacity, smi_mode);
 | 
|    if (object->IsJSArray()) {
 | 
|      Handle<JSArray>::cast(object)->set_length(Smi::FromInt(length));
 | 
|    }
 | 
| @@ -11329,9 +11336,8 @@ Handle<FixedArray> JSObject::SetFastElementsCapacityAndLength(
 | 
|  }
 | 
|  
 | 
|  
 | 
| -void JSObject::SetFastDoubleElementsCapacityAndLength(Handle<JSObject> object,
 | 
| -                                                      int capacity,
 | 
| -                                                      int length) {
 | 
| +Handle<FixedArrayBase> JSObject::SetFastDoubleElementsCapacity(
 | 
| +    Handle<JSObject> object, int capacity) {
 | 
|    // We should never end in here with a pixel or external array.
 | 
|    DCHECK(!object->HasExternalArrayElements());
 | 
|  
 | 
| @@ -11361,9 +11367,18 @@ void JSObject::SetFastDoubleElementsCapacityAndLength(Handle<JSObject> object,
 | 
|                              object->GetElementsKind(), elems);
 | 
|    }
 | 
|  
 | 
| +  return elems;
 | 
| +}
 | 
| +
 | 
| +
 | 
| +Handle<FixedArrayBase> JSObject::SetFastDoubleElementsCapacityAndLength(
 | 
| +    Handle<JSObject> object, int capacity, int length) {
 | 
| +  Handle<FixedArrayBase> new_elements =
 | 
| +      SetFastDoubleElementsCapacity(object, capacity);
 | 
|    if (object->IsJSArray()) {
 | 
|      Handle<JSArray>::cast(object)->set_length(Smi::FromInt(length));
 | 
|    }
 | 
| +  return new_elements;
 | 
|  }
 | 
|  
 | 
|  
 | 
| @@ -13288,9 +13303,8 @@ void JSObject::GetElementsCapacityAndUsage(int* capacity, int* used) {
 | 
|  }
 | 
|  
 | 
|  
 | 
| -bool JSObject::WouldConvertToSlowElements(Handle<Object> key) {
 | 
| -  uint32_t index;
 | 
| -  if (HasFastElements() && key->ToArrayIndex(&index)) {
 | 
| +bool JSObject::WouldConvertToSlowElements(uint32_t index) {
 | 
| +  if (HasFastElements()) {
 | 
|      Handle<FixedArrayBase> backing_store(FixedArrayBase::cast(elements()));
 | 
|      uint32_t capacity = static_cast<uint32_t>(backing_store->length());
 | 
|      if (index >= capacity) {
 | 
| 
 |