| Index: src/hydrogen.cc
|
| diff --git a/src/hydrogen.cc b/src/hydrogen.cc
|
| index 003f4aefeee384ae8847cb3ece5576d56adce4ec..21ef8c019fb410b26214f1751c53e27e3a8579fb 100644
|
| --- a/src/hydrogen.cc
|
| +++ b/src/hydrogen.cc
|
| @@ -1297,20 +1297,6 @@ HValue* HGraphBuilder::BuildWrapReceiver(HValue* object, HValue* function) {
|
| }
|
|
|
|
|
| -HValue* HGraphBuilder::BuildCheckAndGrowElementsCapacity(
|
| - HValue* object, HValue* elements, ElementsKind kind, HValue* length,
|
| - HValue* capacity, HValue* key) {
|
| - HValue* max_gap = Add<HConstant>(static_cast<int32_t>(JSObject::kMaxGap));
|
| - HValue* max_capacity = AddUncasted<HAdd>(capacity, max_gap);
|
| - Add<HBoundsCheck>(key, max_capacity);
|
| -
|
| - HValue* new_capacity = BuildNewElementsCapacity(key);
|
| - HValue* new_elements = BuildGrowElementsCapacity(object, elements, kind, kind,
|
| - length, new_capacity);
|
| - return new_elements;
|
| -}
|
| -
|
| -
|
| HValue* HGraphBuilder::BuildCheckForCapacityGrow(
|
| HValue* object,
|
| HValue* elements,
|
| @@ -1334,27 +1320,17 @@ HValue* HGraphBuilder::BuildCheckForCapacityGrow(
|
| Token::GTE);
|
| capacity_checker.Then();
|
|
|
| - // BuildCheckAndGrowElementsCapacity could de-opt without profitable feedback,
|
| - // therefore we defer calling it to a stub in optimized functions. It is
|
| - // okay to call directly in a code stub though, because a bailout to the
|
| - // runtime is tolerable in the corner cases.
|
| - if (top_info()->IsStub()) {
|
| - HValue* new_elements = BuildCheckAndGrowElementsCapacity(
|
| - object, elements, kind, length, current_capacity, key);
|
| - environment()->Push(new_elements);
|
| - } else {
|
| - GrowArrayElementsStub stub(isolate(), is_js_array, kind);
|
| - GrowArrayElementsDescriptor descriptor(isolate());
|
| - HConstant* target = Add<HConstant>(stub.GetCode());
|
| - HValue* op_vals[] = {context(), object, key, current_capacity};
|
| - HValue* new_elements = Add<HCallWithDescriptor>(
|
| - target, 0, descriptor, Vector<HValue*>(op_vals, 4));
|
| - // If the object changed to a dictionary, GrowArrayElements will return a
|
| - // smi to signal that deopt is required.
|
| - Add<HCheckHeapObject>(new_elements);
|
| - environment()->Push(new_elements);
|
| - }
|
| + HValue* max_gap = Add<HConstant>(static_cast<int32_t>(JSObject::kMaxGap));
|
| + HValue* max_capacity = AddUncasted<HAdd>(current_capacity, max_gap);
|
| +
|
| + Add<HBoundsCheck>(key, max_capacity);
|
| +
|
| + HValue* new_capacity = BuildNewElementsCapacity(key);
|
| + HValue* new_elements = BuildGrowElementsCapacity(object, elements,
|
| + kind, kind, length,
|
| + new_capacity);
|
|
|
| + environment()->Push(new_elements);
|
| capacity_checker.Else();
|
|
|
| environment()->Push(elements);
|
|
|