| 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) {
|
|
|