| Index: src/elements.cc
|
| diff --git a/src/elements.cc b/src/elements.cc
|
| index 5bce3b99bd961fe0f3aa1e20b71fc2965cb3ef2d..0b745c4505fc2fa40b32bc472eb2f405f4eefed5 100644
|
| --- a/src/elements.cc
|
| +++ b/src/elements.cc
|
| @@ -48,7 +48,7 @@
|
| // - FastDoubleElementsAccessor
|
| // - FastPackedDoubleElementsAccessor
|
| // - FastHoleyDoubleElementsAccessor
|
| -// - TypedElementsAccessor (abstract)
|
| +// - ExternalElementsAccessor (abstract)
|
| // - ExternalByteElementsAccessor
|
| // - ExternalUnsignedByteElementsAccessor
|
| // - ExternalShortElementsAccessor
|
| @@ -58,15 +58,6 @@
|
| // - ExternalFloatElementsAccessor
|
| // - ExternalDoubleElementsAccessor
|
| // - PixelElementsAccessor
|
| -// - FixedUint8ArrayAccessor
|
| -// - FixedInt8ArrayAccessor
|
| -// - FixedUint16ArrayAccessor
|
| -// - FixedInt16ArrayAccessor
|
| -// - FixedUint32ArrayAccessor
|
| -// - FixedInt32ArrayAccessor
|
| -// - FixedFloat32ArrayAccessor
|
| -// - FixedFloat64ArrayAccessor
|
| -// - FixedUint8ClampedArrayAccessor
|
| // - DictionaryElementsAccessor
|
| // - NonStrictArgumentsElementsAccessor
|
|
|
| @@ -113,17 +104,7 @@ static const int kPackedSizeNotKnown = -1;
|
| EXTERNAL_FLOAT_ELEMENTS, ExternalFloatArray) \
|
| V(ExternalDoubleElementsAccessor, \
|
| EXTERNAL_DOUBLE_ELEMENTS, ExternalDoubleArray) \
|
| - V(PixelElementsAccessor, EXTERNAL_PIXEL_ELEMENTS, ExternalPixelArray) \
|
| - V(FixedUint8ArrayAccessor, UINT8_ELEMENTS, FixedUint8Array) \
|
| - V(FixedInt8ArrayAccessor, INT8_ELEMENTS, FixedInt8Array) \
|
| - V(FixedUint16ArrayAccessor, UINT16_ELEMENTS, FixedUint16Array) \
|
| - V(FixedInt16ArrayAccessor, INT16_ELEMENTS, FixedInt16Array) \
|
| - V(FixedUint32ArrayAccessor, UINT32_ELEMENTS, FixedUint32Array) \
|
| - V(FixedInt32ArrayAccessor, INT32_ELEMENTS, FixedInt32Array) \
|
| - V(FixedFloat32ArrayAccessor, FLOAT32_ELEMENTS, FixedFloat32Array) \
|
| - V(FixedFloat64ArrayAccessor, FLOAT64_ELEMENTS, FixedFloat64Array) \
|
| - V(FixedUint8ClampedArrayAccessor, UINT8_CLAMPED_ELEMENTS, \
|
| - FixedUint8ClampedArray)
|
| + V(PixelElementsAccessor, EXTERNAL_PIXEL_ELEMENTS, ExternalPixelArray)
|
|
|
|
|
| template<ElementsKind Kind> class ElementsKindTraits {
|
| @@ -1115,26 +1096,6 @@ static inline ElementsKind ElementsKindForArray(FixedArrayBase* array) {
|
| return EXTERNAL_DOUBLE_ELEMENTS;
|
| case EXTERNAL_PIXEL_ARRAY_TYPE:
|
| return EXTERNAL_PIXEL_ELEMENTS;
|
| -
|
| - case FIXED_UINT8_ARRAY_TYPE:
|
| - return UINT8_ELEMENTS;
|
| - case FIXED_INT8_ARRAY_TYPE:
|
| - return INT8_ELEMENTS;
|
| - case FIXED_UINT16_ARRAY_TYPE:
|
| - return UINT16_ELEMENTS;
|
| - case FIXED_INT16_ARRAY_TYPE:
|
| - return INT16_ELEMENTS;
|
| - case FIXED_UINT32_ARRAY_TYPE:
|
| - return UINT32_ELEMENTS;
|
| - case FIXED_INT32_ARRAY_TYPE:
|
| - return INT32_ELEMENTS;
|
| - case FIXED_FLOAT32_ARRAY_TYPE:
|
| - return FLOAT32_ELEMENTS;
|
| - case FIXED_FLOAT64_ARRAY_TYPE:
|
| - return FLOAT64_ELEMENTS;
|
| - case FIXED_UINT8_CLAMPED_ARRAY_TYPE:
|
| - return UINT8_CLAMPED_ELEMENTS;
|
| -
|
| default:
|
| UNREACHABLE();
|
| }
|
| @@ -1197,15 +1158,6 @@ class FastSmiOrObjectElementsAccessor
|
| case EXTERNAL_FLOAT_ELEMENTS:
|
| case EXTERNAL_DOUBLE_ELEMENTS:
|
| case EXTERNAL_PIXEL_ELEMENTS:
|
| - case UINT8_ELEMENTS:
|
| - case INT8_ELEMENTS:
|
| - case UINT16_ELEMENTS:
|
| - case INT16_ELEMENTS:
|
| - case UINT32_ELEMENTS:
|
| - case INT32_ELEMENTS:
|
| - case FLOAT32_ELEMENTS:
|
| - case FLOAT64_ELEMENTS:
|
| - case UINT8_CLAMPED_ELEMENTS:
|
| UNREACHABLE();
|
| }
|
| return NULL;
|
| @@ -1331,15 +1283,6 @@ class FastDoubleElementsAccessor
|
| case EXTERNAL_FLOAT_ELEMENTS:
|
| case EXTERNAL_DOUBLE_ELEMENTS:
|
| case EXTERNAL_PIXEL_ELEMENTS:
|
| - case UINT8_ELEMENTS:
|
| - case INT8_ELEMENTS:
|
| - case UINT16_ELEMENTS:
|
| - case INT16_ELEMENTS:
|
| - case UINT32_ELEMENTS:
|
| - case INT32_ELEMENTS:
|
| - case FLOAT32_ELEMENTS:
|
| - case FLOAT64_ELEMENTS:
|
| - case UINT8_CLAMPED_ELEMENTS:
|
| UNREACHABLE();
|
| }
|
| return to->GetHeap()->undefined_value();
|
| @@ -1377,20 +1320,20 @@ class FastHoleyDoubleElementsAccessor
|
|
|
|
|
| // Super class for all external element arrays.
|
| -template<typename AccessorSubclass,
|
| +template<typename ExternalElementsAccessorSubclass,
|
| ElementsKind Kind>
|
| -class TypedElementsAccessor
|
| - : public ElementsAccessorBase<AccessorSubclass,
|
| +class ExternalElementsAccessor
|
| + : public ElementsAccessorBase<ExternalElementsAccessorSubclass,
|
| ElementsKindTraits<Kind> > {
|
| public:
|
| - explicit TypedElementsAccessor(const char* name)
|
| - : ElementsAccessorBase<AccessorSubclass,
|
| + explicit ExternalElementsAccessor(const char* name)
|
| + : ElementsAccessorBase<ExternalElementsAccessorSubclass,
|
| ElementsKindTraits<Kind> >(name) {}
|
|
|
| protected:
|
| typedef typename ElementsKindTraits<Kind>::BackingStore BackingStore;
|
|
|
| - friend class ElementsAccessorBase<AccessorSubclass,
|
| + friend class ElementsAccessorBase<ExternalElementsAccessorSubclass,
|
| ElementsKindTraits<Kind> >;
|
|
|
| MUST_USE_RESULT static MaybeObject* GetImpl(Object* receiver,
|
| @@ -1398,7 +1341,7 @@ class TypedElementsAccessor
|
| uint32_t key,
|
| FixedArrayBase* backing_store) {
|
| return
|
| - key < AccessorSubclass::GetCapacityImpl(backing_store)
|
| + key < ExternalElementsAccessorSubclass::GetCapacityImpl(backing_store)
|
| ? BackingStore::cast(backing_store)->get(key)
|
| : backing_store->GetHeap()->undefined_value();
|
| }
|
| @@ -1409,7 +1352,7 @@ class TypedElementsAccessor
|
| uint32_t key,
|
| FixedArrayBase* backing_store) {
|
| return
|
| - key < AccessorSubclass::GetCapacityImpl(backing_store)
|
| + key < ExternalElementsAccessorSubclass::GetCapacityImpl(backing_store)
|
| ? NONE : ABSENT;
|
| }
|
|
|
| @@ -1419,7 +1362,7 @@ class TypedElementsAccessor
|
| uint32_t key,
|
| FixedArrayBase* backing_store) {
|
| return
|
| - key < AccessorSubclass::GetCapacityImpl(backing_store)
|
| + key < ExternalElementsAccessorSubclass::GetCapacityImpl(backing_store)
|
| ? FIELD : NONEXISTENT;
|
| }
|
|
|
| @@ -1444,175 +1387,101 @@ class TypedElementsAccessor
|
| uint32_t key,
|
| FixedArrayBase* backing_store) {
|
| uint32_t capacity =
|
| - AccessorSubclass::GetCapacityImpl(backing_store);
|
| + ExternalElementsAccessorSubclass::GetCapacityImpl(backing_store);
|
| return key < capacity;
|
| }
|
| };
|
|
|
|
|
| class ExternalByteElementsAccessor
|
| - : public TypedElementsAccessor<ExternalByteElementsAccessor,
|
| - EXTERNAL_BYTE_ELEMENTS> {
|
| + : public ExternalElementsAccessor<ExternalByteElementsAccessor,
|
| + EXTERNAL_BYTE_ELEMENTS> {
|
| public:
|
| explicit ExternalByteElementsAccessor(const char* name)
|
| - : TypedElementsAccessor<ExternalByteElementsAccessor,
|
| - EXTERNAL_BYTE_ELEMENTS>(name) {}
|
| + : ExternalElementsAccessor<ExternalByteElementsAccessor,
|
| + EXTERNAL_BYTE_ELEMENTS>(name) {}
|
| };
|
|
|
|
|
| class ExternalUnsignedByteElementsAccessor
|
| - : public TypedElementsAccessor<ExternalUnsignedByteElementsAccessor,
|
| - EXTERNAL_UNSIGNED_BYTE_ELEMENTS> {
|
| + : public ExternalElementsAccessor<ExternalUnsignedByteElementsAccessor,
|
| + EXTERNAL_UNSIGNED_BYTE_ELEMENTS> {
|
| public:
|
| explicit ExternalUnsignedByteElementsAccessor(const char* name)
|
| - : TypedElementsAccessor<ExternalUnsignedByteElementsAccessor,
|
| - EXTERNAL_UNSIGNED_BYTE_ELEMENTS>(name) {}
|
| + : ExternalElementsAccessor<ExternalUnsignedByteElementsAccessor,
|
| + EXTERNAL_UNSIGNED_BYTE_ELEMENTS>(name) {}
|
| };
|
|
|
|
|
| class ExternalShortElementsAccessor
|
| - : public TypedElementsAccessor<ExternalShortElementsAccessor,
|
| - EXTERNAL_SHORT_ELEMENTS> {
|
| + : public ExternalElementsAccessor<ExternalShortElementsAccessor,
|
| + EXTERNAL_SHORT_ELEMENTS> {
|
| public:
|
| explicit ExternalShortElementsAccessor(const char* name)
|
| - : TypedElementsAccessor<ExternalShortElementsAccessor,
|
| - EXTERNAL_SHORT_ELEMENTS>(name) {}
|
| + : ExternalElementsAccessor<ExternalShortElementsAccessor,
|
| + EXTERNAL_SHORT_ELEMENTS>(name) {}
|
| };
|
|
|
|
|
| class ExternalUnsignedShortElementsAccessor
|
| - : public TypedElementsAccessor<ExternalUnsignedShortElementsAccessor,
|
| - EXTERNAL_UNSIGNED_SHORT_ELEMENTS> {
|
| + : public ExternalElementsAccessor<ExternalUnsignedShortElementsAccessor,
|
| + EXTERNAL_UNSIGNED_SHORT_ELEMENTS> {
|
| public:
|
| explicit ExternalUnsignedShortElementsAccessor(const char* name)
|
| - : TypedElementsAccessor<ExternalUnsignedShortElementsAccessor,
|
| - EXTERNAL_UNSIGNED_SHORT_ELEMENTS>(name) {}
|
| + : ExternalElementsAccessor<ExternalUnsignedShortElementsAccessor,
|
| + EXTERNAL_UNSIGNED_SHORT_ELEMENTS>(name) {}
|
| };
|
|
|
|
|
| class ExternalIntElementsAccessor
|
| - : public TypedElementsAccessor<ExternalIntElementsAccessor,
|
| - EXTERNAL_INT_ELEMENTS> {
|
| + : public ExternalElementsAccessor<ExternalIntElementsAccessor,
|
| + EXTERNAL_INT_ELEMENTS> {
|
| public:
|
| explicit ExternalIntElementsAccessor(const char* name)
|
| - : TypedElementsAccessor<ExternalIntElementsAccessor,
|
| - EXTERNAL_INT_ELEMENTS>(name) {}
|
| + : ExternalElementsAccessor<ExternalIntElementsAccessor,
|
| + EXTERNAL_INT_ELEMENTS>(name) {}
|
| };
|
|
|
|
|
| class ExternalUnsignedIntElementsAccessor
|
| - : public TypedElementsAccessor<ExternalUnsignedIntElementsAccessor,
|
| - EXTERNAL_UNSIGNED_INT_ELEMENTS> {
|
| + : public ExternalElementsAccessor<ExternalUnsignedIntElementsAccessor,
|
| + EXTERNAL_UNSIGNED_INT_ELEMENTS> {
|
| public:
|
| explicit ExternalUnsignedIntElementsAccessor(const char* name)
|
| - : TypedElementsAccessor<ExternalUnsignedIntElementsAccessor,
|
| + : ExternalElementsAccessor<ExternalUnsignedIntElementsAccessor,
|
| EXTERNAL_UNSIGNED_INT_ELEMENTS>(name) {}
|
| };
|
|
|
|
|
| class ExternalFloatElementsAccessor
|
| - : public TypedElementsAccessor<ExternalFloatElementsAccessor,
|
| - EXTERNAL_FLOAT_ELEMENTS> {
|
| + : public ExternalElementsAccessor<ExternalFloatElementsAccessor,
|
| + EXTERNAL_FLOAT_ELEMENTS> {
|
| public:
|
| explicit ExternalFloatElementsAccessor(const char* name)
|
| - : TypedElementsAccessor<ExternalFloatElementsAccessor,
|
| - EXTERNAL_FLOAT_ELEMENTS>(name) {}
|
| + : ExternalElementsAccessor<ExternalFloatElementsAccessor,
|
| + EXTERNAL_FLOAT_ELEMENTS>(name) {}
|
| };
|
|
|
|
|
| class ExternalDoubleElementsAccessor
|
| - : public TypedElementsAccessor<ExternalDoubleElementsAccessor,
|
| - EXTERNAL_DOUBLE_ELEMENTS> {
|
| + : public ExternalElementsAccessor<ExternalDoubleElementsAccessor,
|
| + EXTERNAL_DOUBLE_ELEMENTS> {
|
| public:
|
| explicit ExternalDoubleElementsAccessor(const char* name)
|
| - : TypedElementsAccessor<ExternalDoubleElementsAccessor,
|
| - EXTERNAL_DOUBLE_ELEMENTS>(name) {}
|
| + : ExternalElementsAccessor<ExternalDoubleElementsAccessor,
|
| + EXTERNAL_DOUBLE_ELEMENTS>(name) {}
|
| };
|
|
|
|
|
| class PixelElementsAccessor
|
| - : public TypedElementsAccessor<PixelElementsAccessor,
|
| - EXTERNAL_PIXEL_ELEMENTS> {
|
| + : public ExternalElementsAccessor<PixelElementsAccessor,
|
| + EXTERNAL_PIXEL_ELEMENTS> {
|
| public:
|
| explicit PixelElementsAccessor(const char* name)
|
| - : TypedElementsAccessor<PixelElementsAccessor,
|
| - EXTERNAL_PIXEL_ELEMENTS>(name) {}
|
| -};
|
| -
|
| -
|
| -class FixedUint8ArrayAccessor
|
| - : public TypedElementsAccessor<FixedUint8ArrayAccessor,
|
| - UINT8_ELEMENTS> {
|
| - public:
|
| - explicit FixedUint8ArrayAccessor(const char* name)
|
| - : TypedElementsAccessor<FixedUint8ArrayAccessor,
|
| - UINT8_ELEMENTS>(name) {}
|
| -};
|
| -class FixedUint8ClampedArrayAccessor
|
| - : public TypedElementsAccessor<FixedUint8ClampedArrayAccessor,
|
| - UINT8_CLAMPED_ELEMENTS> {
|
| - public:
|
| - explicit FixedUint8ClampedArrayAccessor(const char* name)
|
| - : TypedElementsAccessor<FixedUint8ClampedArrayAccessor,
|
| - UINT8_CLAMPED_ELEMENTS>(name) {}
|
| -};
|
| -class FixedInt8ArrayAccessor
|
| - : public TypedElementsAccessor<FixedInt8ArrayAccessor,
|
| - INT8_ELEMENTS> {
|
| - public:
|
| - explicit FixedInt8ArrayAccessor(const char* name)
|
| - : TypedElementsAccessor<FixedInt8ArrayAccessor,
|
| - INT8_ELEMENTS>(name) {}
|
| -};
|
| -class FixedUint16ArrayAccessor
|
| - : public TypedElementsAccessor<FixedUint16ArrayAccessor,
|
| - UINT16_ELEMENTS> {
|
| - public:
|
| - explicit FixedUint16ArrayAccessor(const char* name)
|
| - : TypedElementsAccessor<FixedUint16ArrayAccessor,
|
| - UINT16_ELEMENTS>(name) {}
|
| -};
|
| -class FixedInt16ArrayAccessor
|
| - : public TypedElementsAccessor<FixedInt16ArrayAccessor,
|
| - INT16_ELEMENTS> {
|
| - public:
|
| - explicit FixedInt16ArrayAccessor(const char* name)
|
| - : TypedElementsAccessor<FixedInt16ArrayAccessor,
|
| - INT16_ELEMENTS>(name) {}
|
| -};
|
| -class FixedUint32ArrayAccessor
|
| - : public TypedElementsAccessor<FixedUint32ArrayAccessor,
|
| - UINT32_ELEMENTS> {
|
| - public:
|
| - explicit FixedUint32ArrayAccessor(const char* name)
|
| - : TypedElementsAccessor<FixedUint32ArrayAccessor,
|
| - UINT32_ELEMENTS>(name) {}
|
| -};
|
| -class FixedInt32ArrayAccessor
|
| - : public TypedElementsAccessor<FixedInt32ArrayAccessor,
|
| - INT32_ELEMENTS> {
|
| - public:
|
| - explicit FixedInt32ArrayAccessor(const char* name)
|
| - : TypedElementsAccessor<FixedInt32ArrayAccessor,
|
| - INT32_ELEMENTS>(name) {}
|
| + : ExternalElementsAccessor<PixelElementsAccessor,
|
| + EXTERNAL_PIXEL_ELEMENTS>(name) {}
|
| };
|
|
|
| -class FixedFloat32ArrayAccessor
|
| - : public TypedElementsAccessor<FixedFloat32ArrayAccessor,
|
| - FLOAT32_ELEMENTS> {
|
| - public:
|
| - explicit FixedFloat32ArrayAccessor(const char* name)
|
| - : TypedElementsAccessor<FixedFloat32ArrayAccessor,
|
| - FLOAT32_ELEMENTS>(name) {}
|
| -};
|
| -class FixedFloat64ArrayAccessor
|
| - : public TypedElementsAccessor<FixedFloat64ArrayAccessor,
|
| - FLOAT64_ELEMENTS> {
|
| - public:
|
| - explicit FixedFloat64ArrayAccessor(const char* name)
|
| - : TypedElementsAccessor<FixedFloat64ArrayAccessor,
|
| - FLOAT64_ELEMENTS>(name) {}
|
| -};
|
|
|
| class DictionaryElementsAccessor
|
| : public ElementsAccessorBase<DictionaryElementsAccessor,
|
|
|