| Index: src/elements.cc | 
| diff --git a/src/elements.cc b/src/elements.cc | 
| index 5a6f91b4816f9bf5dbcac569b42114d577dac700..527df6e3d753cf9386839413d78dc5f9a610447b 100644 | 
| --- a/src/elements.cc | 
| +++ b/src/elements.cc | 
| @@ -784,16 +784,6 @@ class ElementsAccessorBase : public ElementsAccessor { | 
| return obj; | 
| } | 
|  | 
| -  // TODO(ishell): Temporary wrapper until handlified. | 
| -  MUST_USE_RESULT static Handle<FixedArray> SetFastElementsCapacityAndLength( | 
| -      Handle<JSObject> obj, | 
| -      int capacity, | 
| -      int length) { | 
| -    CALL_HEAP_FUNCTION(obj->GetIsolate(), | 
| -                       SetFastElementsCapacityAndLength(*obj, capacity, length), | 
| -                       FixedArray); | 
| -  } | 
| - | 
| MUST_USE_RESULT virtual Handle<Object> Delete( | 
| Handle<JSObject> obj, | 
| uint32_t key, | 
| @@ -988,28 +978,28 @@ class FastElementsAccessor | 
|  | 
| // Adjusts the length of the fast backing store or returns the new length or | 
| // undefined in case conversion to a slow backing store should be performed. | 
| -  static Handle<Object> SetLengthWithoutNormalize( | 
| -      Handle<FixedArrayBase> backing_store, | 
| -      Handle<JSArray> array, | 
| -      Handle<Object> length_object, | 
| -      uint32_t length) { | 
| -    Isolate* isolate = array->GetIsolate(); | 
| +  static MaybeObject* SetLengthWithoutNormalize(FixedArrayBase* backing_store, | 
| +                                                JSArray* array, | 
| +                                                Object* length_object, | 
| +                                                uint32_t length) { | 
| uint32_t old_capacity = backing_store->length(); | 
| -    Handle<Object> old_length(array->length(), isolate); | 
| +    Object* old_length = array->length(); | 
| bool same_or_smaller_size = old_length->IsSmi() && | 
| -        static_cast<uint32_t>(Handle<Smi>::cast(old_length)->value()) >= length; | 
| +        static_cast<uint32_t>(Smi::cast(old_length)->value()) >= length; | 
| ElementsKind kind = array->GetElementsKind(); | 
|  | 
| if (!same_or_smaller_size && IsFastElementsKind(kind) && | 
| !IsFastHoleyElementsKind(kind)) { | 
| kind = GetHoleyElementsKind(kind); | 
| -      JSObject::TransitionElementsKind(array, kind); | 
| +      MaybeObject* maybe_obj = array->TransitionElementsKind(kind); | 
| +      if (maybe_obj->IsFailure()) return maybe_obj; | 
| } | 
|  | 
| // Check whether the backing store should be shrunk. | 
| if (length <= old_capacity) { | 
| if (array->HasFastSmiOrObjectElements()) { | 
| -        backing_store = JSObject::EnsureWritableFastElements(array); | 
| +        MaybeObject* maybe_obj = array->EnsureWritableFastElements(); | 
| +        if (!maybe_obj->To(&backing_store)) return maybe_obj; | 
| } | 
| if (2 * length <= old_capacity) { | 
| // If more than half the elements won't be used, trim the array. | 
| @@ -1026,7 +1016,7 @@ class FastElementsAccessor | 
| // Otherwise, fill the unused tail with holes. | 
| int old_length = FastD2IChecked(array->length()->Number()); | 
| for (int i = length; i < old_length; i++) { | 
| -          Handle<BackingStore>::cast(backing_store)->set_the_hole(i); | 
| +          BackingStore::cast(backing_store)->set_the_hole(i); | 
| } | 
| } | 
| return length_object; | 
| @@ -1036,14 +1026,27 @@ class FastElementsAccessor | 
| uint32_t min = JSObject::NewElementsCapacity(old_capacity); | 
| uint32_t new_capacity = length > min ? length : min; | 
| if (!array->ShouldConvertToSlowElements(new_capacity)) { | 
| -      FastElementsAccessorSubclass:: | 
| +      MaybeObject* result = FastElementsAccessorSubclass:: | 
| SetFastElementsCapacityAndLength(array, new_capacity, length); | 
| +      if (result->IsFailure()) return result; | 
| array->ValidateElements(); | 
| return length_object; | 
| } | 
|  | 
| // Request conversion to slow elements. | 
| -    return isolate->factory()->undefined_value(); | 
| +    return array->GetHeap()->undefined_value(); | 
| +  } | 
| + | 
| +  // TODO(ishell): Temporary wrapper until handlified. | 
| +  static Handle<Object> SetLengthWithoutNormalize( | 
| +      Handle<FixedArrayBase> backing_store, | 
| +      Handle<JSArray> array, | 
| +      Handle<Object> length_object, | 
| +      uint32_t length) { | 
| +    CALL_HEAP_FUNCTION(array->GetIsolate(), | 
| +                       SetLengthWithoutNormalize( | 
| +                           *backing_store, *array, *length_object, length), | 
| +                       Object); | 
| } | 
|  | 
| static Handle<Object> DeleteCommon(Handle<JSObject> obj, | 
| @@ -1241,16 +1244,6 @@ class FastSmiOrObjectElementsAccessor | 
| length, | 
| set_capacity_mode); | 
| } | 
| - | 
| -  // TODO(ishell): Temporary wrapper until handlified. | 
| -  static Handle<FixedArray> SetFastElementsCapacityAndLength( | 
| -      Handle<JSObject> obj, | 
| -      int capacity, | 
| -      int length) { | 
| -    CALL_HEAP_FUNCTION(obj->GetIsolate(), | 
| -                       SetFastElementsCapacityAndLength(*obj, capacity, length), | 
| -                       FixedArray); | 
| -  } | 
| }; | 
|  | 
|  | 
| @@ -1321,16 +1314,6 @@ class FastDoubleElementsAccessor | 
| length); | 
| } | 
|  | 
| -  // TODO(ishell): Temporary wrapper until handlified. | 
| -  static Handle<FixedArray> SetFastElementsCapacityAndLength( | 
| -      Handle<JSObject> obj, | 
| -      int capacity, | 
| -      int length) { | 
| -    CALL_HEAP_FUNCTION(obj->GetIsolate(), | 
| -                       SetFastElementsCapacityAndLength(*obj, capacity, length), | 
| -                       FixedArray); | 
| -  } | 
| - | 
| protected: | 
| static MaybeObject* CopyElementsImpl(FixedArrayBase* from, | 
| uint32_t from_start, | 
|  |