Chromium Code Reviews| Index: src/builtins.cc |
| diff --git a/src/builtins.cc b/src/builtins.cc |
| index f906b50aa8b037b9ec6215487fbc290938417209..a1fd8edee6c1c1bfe6b5d73f751fb84203d53177 100644 |
| --- a/src/builtins.cc |
| +++ b/src/builtins.cc |
| @@ -881,49 +881,6 @@ uint32_t EstimateElementCount(Handle<JSArray> array) { |
| } |
| -template <class ExternalArrayClass, class ElementType> |
| -bool IterateTypedArrayElements(Isolate* isolate, Handle<JSObject> receiver, |
| - bool elements_are_ints, |
| - bool elements_are_guaranteed_smis, |
| - ArrayConcatVisitor* visitor) { |
| - Handle<ExternalArrayClass> array( |
| - ExternalArrayClass::cast(receiver->elements())); |
| - uint32_t len = static_cast<uint32_t>(array->length()); |
| - |
| - DCHECK(visitor != NULL); |
| - if (elements_are_ints) { |
| - if (elements_are_guaranteed_smis) { |
| - for (uint32_t j = 0; j < len; j++) { |
| - HandleScope loop_scope(isolate); |
| - Handle<Smi> e(Smi::FromInt(static_cast<int>(array->get_scalar(j))), |
| - isolate); |
| - if (!visitor->visit(j, e)) return false; |
| - } |
| - } else { |
| - for (uint32_t j = 0; j < len; j++) { |
| - HandleScope loop_scope(isolate); |
| - int64_t val = static_cast<int64_t>(array->get_scalar(j)); |
| - if (Smi::IsValid(static_cast<intptr_t>(val))) { |
| - Handle<Smi> e(Smi::FromInt(static_cast<int>(val)), isolate); |
| - if (!visitor->visit(j, e)) return false; |
| - } else { |
| - Handle<Object> e = |
| - isolate->factory()->NewNumber(static_cast<ElementType>(val)); |
| - if (!visitor->visit(j, e)) return false; |
| - } |
| - } |
| - } |
| - } else { |
| - for (uint32_t j = 0; j < len; j++) { |
| - HandleScope loop_scope(isolate); |
| - Handle<Object> e = isolate->factory()->NewNumber(array->get_scalar(j)); |
| - if (!visitor->visit(j, e)) return false; |
| - } |
| - } |
| - return true; |
| -} |
| - |
| - |
| // Used for sorting indices in a List<uint32_t>. |
| int compareUInt32(const uint32_t* ap, const uint32_t* bp) { |
| uint32_t a = *ap; |
| @@ -1098,7 +1055,7 @@ bool IterateElements(Isolate* isolate, Handle<JSReceiver> receiver, |
| } |
| } |
| - if (!(receiver->IsJSArray() || receiver->IsJSTypedArray())) { |
| + if (!receiver->IsJSArray()) { |
| // For classes which are not known to be safe to access via elements alone, |
| // use the slow case. |
| return IterateElementsSlow(isolate, receiver, length, visitor); |
| @@ -1172,6 +1129,7 @@ bool IterateElements(Isolate* isolate, Handle<JSReceiver> receiver, |
| } |
| break; |
| } |
| + |
| case DICTIONARY_ELEMENTS: { |
| // CollectElementIndices() can't be called when there's a JSProxy |
| // on the prototype chain. |
| @@ -1203,63 +1161,6 @@ bool IterateElements(Isolate* isolate, Handle<JSReceiver> receiver, |
| } |
| break; |
| } |
| - case UINT8_CLAMPED_ELEMENTS: { |
| - Handle<FixedUint8ClampedArray> pixels( |
| - FixedUint8ClampedArray::cast(array->elements())); |
| - for (uint32_t j = 0; j < length; j++) { |
| - Handle<Smi> e(Smi::FromInt(pixels->get_scalar(j)), isolate); |
| - visitor->visit(j, e); |
| - } |
| - break; |
| - } |
| - case INT8_ELEMENTS: { |
| - if (!IterateTypedArrayElements<FixedInt8Array, int8_t>( |
| - isolate, array, true, true, visitor)) |
| - return false; |
| - break; |
| - } |
| - case UINT8_ELEMENTS: { |
| - if (!IterateTypedArrayElements<FixedUint8Array, uint8_t>( |
| - isolate, array, true, true, visitor)) |
| - return false; |
| - break; |
| - } |
| - case INT16_ELEMENTS: { |
| - if (!IterateTypedArrayElements<FixedInt16Array, int16_t>( |
| - isolate, array, true, true, visitor)) |
| - return false; |
| - break; |
| - } |
| - case UINT16_ELEMENTS: { |
| - if (!IterateTypedArrayElements<FixedUint16Array, uint16_t>( |
| - isolate, array, true, true, visitor)) |
| - return false; |
| - break; |
| - } |
| - case INT32_ELEMENTS: { |
| - if (!IterateTypedArrayElements<FixedInt32Array, int32_t>( |
| - isolate, array, true, false, visitor)) |
| - return false; |
| - break; |
| - } |
| - case UINT32_ELEMENTS: { |
| - if (!IterateTypedArrayElements<FixedUint32Array, uint32_t>( |
| - isolate, array, true, false, visitor)) |
| - return false; |
| - break; |
| - } |
| - case FLOAT32_ELEMENTS: { |
| - if (!IterateTypedArrayElements<FixedFloat32Array, float>( |
| - isolate, array, false, false, visitor)) |
| - return false; |
| - break; |
| - } |
| - case FLOAT64_ELEMENTS: { |
| - if (!IterateTypedArrayElements<FixedFloat64Array, double>( |
| - isolate, array, false, false, visitor)) |
| - return false; |
| - break; |
| - } |
| case FAST_SLOPPY_ARGUMENTS_ELEMENTS: |
| case SLOW_SLOPPY_ARGUMENTS_ELEMENTS: { |
| for (uint32_t index = 0; index < length; index++) { |
| @@ -1273,6 +1174,9 @@ bool IterateElements(Isolate* isolate, Handle<JSReceiver> receiver, |
| } |
| case NO_ELEMENTS: |
| break; |
| +#define TYPED_ARRAY_CASE(Type, type, TYPE, ctype, size) case TYPE##_ELEMENTS: |
| + TYPED_ARRAYS(TYPED_ARRAY_CASE) |
| +#undef TYPED_ARRAY_CASE |
| case FAST_STRING_WRAPPER_ELEMENTS: |
| case SLOW_STRING_WRAPPER_ELEMENTS: |
| // |array| is guaranteed to be an array or typed array. |
|
adamk
2016/02/20 02:39:32
This comment is now out of date.
|