| Index: src/objects-inl.h
|
| diff --git a/src/objects-inl.h b/src/objects-inl.h
|
| index 24887a0efb6adba9fc902b813879b695997b7fb9..8f0e243550478d43a2b190e1706edbd5236a41d3 100644
|
| --- a/src/objects-inl.h
|
| +++ b/src/objects-inl.h
|
| @@ -330,9 +330,10 @@ bool Object::IsByteArray() {
|
| }
|
|
|
|
|
| -bool Object::IsPixelArray() {
|
| +bool Object::IsExternalPixelArray() {
|
| return Object::IsHeapObject() &&
|
| - HeapObject::cast(this)->map()->instance_type() == PIXEL_ARRAY_TYPE;
|
| + HeapObject::cast(this)->map()->instance_type() ==
|
| + EXTERNAL_PIXEL_ARRAY_TYPE;
|
| }
|
|
|
|
|
| @@ -1211,8 +1212,7 @@ ACCESSORS(JSObject, properties, FixedArray, kPropertiesOffset)
|
| HeapObject* JSObject::elements() {
|
| Object* array = READ_FIELD(this, kElementsOffset);
|
| // In the assert below Dictionary is covered under FixedArray.
|
| - ASSERT(array->IsFixedArray() || array->IsPixelArray() ||
|
| - array->IsExternalArray());
|
| + ASSERT(array->IsFixedArray() || array->IsExternalArray());
|
| return reinterpret_cast<HeapObject*>(array);
|
| }
|
|
|
| @@ -1222,8 +1222,7 @@ void JSObject::set_elements(HeapObject* value, WriteBarrierMode mode) {
|
| (value->map() == Heap::fixed_array_map() ||
|
| value->map() == Heap::fixed_cow_array_map()));
|
| // In the assert below Dictionary is covered under FixedArray.
|
| - ASSERT(value->IsFixedArray() || value->IsPixelArray() ||
|
| - value->IsExternalArray());
|
| + ASSERT(value->IsFixedArray() || value->IsExternalArray());
|
| WRITE_FIELD(this, kElementsOffset, value);
|
| CONDITIONAL_WRITE_BARRIER(this, kElementsOffset, mode);
|
| }
|
| @@ -1756,7 +1755,6 @@ CAST_ACCESSOR(JSArray)
|
| CAST_ACCESSOR(JSRegExp)
|
| CAST_ACCESSOR(Proxy)
|
| CAST_ACCESSOR(ByteArray)
|
| -CAST_ACCESSOR(PixelArray)
|
| CAST_ACCESSOR(ExternalArray)
|
| CAST_ACCESSOR(ExternalByteArray)
|
| CAST_ACCESSOR(ExternalUnsignedByteArray)
|
| @@ -1765,6 +1763,7 @@ CAST_ACCESSOR(ExternalUnsignedShortArray)
|
| CAST_ACCESSOR(ExternalIntArray)
|
| CAST_ACCESSOR(ExternalUnsignedIntArray)
|
| CAST_ACCESSOR(ExternalFloatArray)
|
| +CAST_ACCESSOR(ExternalPixelArray)
|
| CAST_ACCESSOR(Struct)
|
|
|
|
|
| @@ -1783,7 +1782,6 @@ HashTable<Shape, Key>* HashTable<Shape, Key>::cast(Object* obj) {
|
| SMI_ACCESSORS(FixedArray, length, kLengthOffset)
|
| SMI_ACCESSORS(ByteArray, length, kLengthOffset)
|
|
|
| -INT_ACCESSORS(PixelArray, length, kLengthOffset)
|
| INT_ACCESSORS(ExternalArray, length, kLengthOffset)
|
|
|
|
|
| @@ -2050,28 +2048,21 @@ Address ByteArray::GetDataStartAddress() {
|
| }
|
|
|
|
|
| -uint8_t* PixelArray::external_pointer() {
|
| - intptr_t ptr = READ_INTPTR_FIELD(this, kExternalPointerOffset);
|
| - return reinterpret_cast<uint8_t*>(ptr);
|
| -}
|
| -
|
| -
|
| -void PixelArray::set_external_pointer(uint8_t* value, WriteBarrierMode mode) {
|
| - intptr_t ptr = reinterpret_cast<intptr_t>(value);
|
| - WRITE_INTPTR_FIELD(this, kExternalPointerOffset, ptr);
|
| +uint8_t* ExternalPixelArray::external_pixel_pointer() {
|
| + return reinterpret_cast<uint8_t*>(external_pointer());
|
| }
|
|
|
|
|
| -uint8_t PixelArray::get(int index) {
|
| +uint8_t ExternalPixelArray::get(int index) {
|
| ASSERT((index >= 0) && (index < this->length()));
|
| - uint8_t* ptr = external_pointer();
|
| + uint8_t* ptr = external_pixel_pointer();
|
| return ptr[index];
|
| }
|
|
|
|
|
| -void PixelArray::set(int index, uint8_t value) {
|
| +void ExternalPixelArray::set(int index, uint8_t value) {
|
| ASSERT((index >= 0) && (index < this->length()));
|
| - uint8_t* ptr = external_pointer();
|
| + uint8_t* ptr = external_pixel_pointer();
|
| ptr[index] = value;
|
| }
|
|
|
| @@ -2749,7 +2740,7 @@ MaybeObject* Map::GetSlowElementsMap() {
|
| }
|
|
|
|
|
| -MaybeObject* Map::GetPixelArrayElementsMap() {
|
| +MaybeObject* Map::GetExternalPixelArrayElementsMap() {
|
| if (has_pixel_array_elements()) return this;
|
| // TODO(danno): Special case empty object map (or most common case)
|
| // to return a pre-canned pixel array map.
|
| @@ -3479,13 +3470,17 @@ JSObject::ElementsKind JSObject::GetElementsKind() {
|
| return EXTERNAL_INT_ELEMENTS;
|
| case EXTERNAL_UNSIGNED_INT_ARRAY_TYPE:
|
| return EXTERNAL_UNSIGNED_INT_ELEMENTS;
|
| + case EXTERNAL_PIXEL_ARRAY_TYPE:
|
| + return EXTERNAL_PIXEL_ELEMENTS;
|
| default:
|
| ASSERT(array->map()->instance_type() == EXTERNAL_FLOAT_ARRAY_TYPE);
|
| return EXTERNAL_FLOAT_ELEMENTS;
|
| }
|
| }
|
| - ASSERT(array->IsPixelArray());
|
| - return PIXEL_ELEMENTS;
|
| + UNREACHABLE();
|
| + // This code is never reached, but some type has to be returned to make the
|
| + // compiler happy.
|
| + return EXTERNAL_BYTE_ELEMENTS;
|
| }
|
|
|
|
|
| @@ -3499,11 +3494,6 @@ bool JSObject::HasDictionaryElements() {
|
| }
|
|
|
|
|
| -bool JSObject::HasPixelElements() {
|
| - return GetElementsKind() == PIXEL_ELEMENTS;
|
| -}
|
| -
|
| -
|
| bool JSObject::HasExternalArrayElements() {
|
| return (HasExternalByteElements() ||
|
| HasExternalUnsignedByteElements() ||
|
| @@ -3511,7 +3501,13 @@ bool JSObject::HasExternalArrayElements() {
|
| HasExternalUnsignedShortElements() ||
|
| HasExternalIntElements() ||
|
| HasExternalUnsignedIntElements() ||
|
| - HasExternalFloatElements());
|
| + HasExternalFloatElements() ||
|
| + HasExternalPixelElements());
|
| +}
|
| +
|
| +
|
| +bool JSObject::HasExternalPixelElements() {
|
| + return GetElementsKind() == EXTERNAL_PIXEL_ELEMENTS;
|
| }
|
|
|
|
|
| @@ -3562,7 +3558,7 @@ bool JSObject::HasIndexedInterceptor() {
|
|
|
| bool JSObject::AllowsSetElementsLength() {
|
| bool result = elements()->IsFixedArray();
|
| - ASSERT(result == (!HasPixelElements() && !HasExternalArrayElements()));
|
| + ASSERT(result == !HasExternalArrayElements());
|
| return result;
|
| }
|
|
|
|
|