Index: src/objects.cc |
diff --git a/src/objects.cc b/src/objects.cc |
index 7e7a3c0f59135be8edae8a335d7afedf4f97a774..18a811bdc3622c343abd884fc9adbdc6cc22da20 100644 |
--- a/src/objects.cc |
+++ b/src/objects.cc |
@@ -1677,6 +1677,10 @@ void HeapObject::HeapObjectShortPrint(StringStream* accumulator) { |
accumulator->Add("<ExternalDoubleArray[%u]>", |
ExternalDoubleArray::cast(this)->length()); |
break; |
+ case FIXED_UINT8_ARRAY_TYPE: |
+ accumulator->Add("<FixedUint8Array[%u]>", |
+ FixedUint8Array::cast(this)->length()); |
+ break; |
case SHARED_FUNCTION_INFO_TYPE: { |
SharedFunctionInfo* shared = SharedFunctionInfo::cast(this); |
SmartArrayPointer<char> debug_name = |
@@ -1866,6 +1870,15 @@ void HeapObject::IterateBody(InstanceType type, int object_size, |
case EXTERNAL_UNSIGNED_INT_ARRAY_TYPE: |
case EXTERNAL_FLOAT_ARRAY_TYPE: |
case EXTERNAL_DOUBLE_ARRAY_TYPE: |
+ case FIXED_INT8_ARRAY_TYPE: |
+ case FIXED_UINT8_ARRAY_TYPE: |
+ case FIXED_INT16_ARRAY_TYPE: |
+ case FIXED_UINT16_ARRAY_TYPE: |
+ case FIXED_INT32_ARRAY_TYPE: |
+ case FIXED_UINT32_ARRAY_TYPE: |
+ case FIXED_FLOAT32_ARRAY_TYPE: |
+ case FIXED_FLOAT64_ARRAY_TYPE: |
+ case FIXED_UINT8_CLAMPED_ARRAY_TYPE: |
break; |
case SHARED_FUNCTION_INFO_TYPE: { |
SharedFunctionInfo::BodyDescriptor::IterateBody(this, v); |
@@ -5377,6 +5390,15 @@ bool JSObject::ReferencesObject(Object* obj) { |
case EXTERNAL_DOUBLE_ELEMENTS: |
case FAST_DOUBLE_ELEMENTS: |
case FAST_HOLEY_DOUBLE_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: |
// Raw pixels and external arrays do not reference other |
// objects. |
break; |
@@ -5869,6 +5891,15 @@ Handle<JSObject> JSObjectWalkVisitor<ContextObject>::StructureWalk( |
case EXTERNAL_DOUBLE_ELEMENTS: |
case FAST_DOUBLE_ELEMENTS: |
case FAST_HOLEY_DOUBLE_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: |
// No contained objects, nothing to do. |
break; |
} |
@@ -6106,6 +6137,15 @@ void JSObject::DefineElementAccessor(Handle<JSObject> object, |
case EXTERNAL_UNSIGNED_INT_ELEMENTS: |
case EXTERNAL_FLOAT_ELEMENTS: |
case EXTERNAL_DOUBLE_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: |
// Ignore getters and setters on pixel and external array elements. |
return; |
case DICTIONARY_ELEMENTS: |
@@ -6564,6 +6604,15 @@ Handle<Object> JSObject::SetAccessor(Handle<JSObject> object, |
case EXTERNAL_UNSIGNED_INT_ELEMENTS: |
case EXTERNAL_FLOAT_ELEMENTS: |
case EXTERNAL_DOUBLE_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: |
// Ignore getters and setters on pixel and external array |
// elements. |
return factory->undefined_value(); |
@@ -12721,6 +12770,51 @@ Handle<Object> JSObject::SetElementWithoutInterceptor( |
ExternalDoubleArray::cast(object->elements())); |
return ExternalDoubleArray::SetValue(array, index, value); |
} |
+ case UINT8_ELEMENTS: { |
+ Handle<FixedUint8Array> array( |
+ FixedUint8Array::cast(object->elements())); |
+ return FixedUint8Array::SetValue(array, index, value); |
+ } |
+ case UINT8_CLAMPED_ELEMENTS: { |
+ Handle<FixedUint8ClampedArray> array( |
+ FixedUint8ClampedArray::cast(object->elements())); |
+ return FixedUint8ClampedArray::SetValue(array, index, value); |
+ } |
+ case INT8_ELEMENTS: { |
+ Handle<FixedInt8Array> array( |
+ FixedInt8Array::cast(object->elements())); |
+ return FixedInt8Array::SetValue(array, index, value); |
+ } |
+ case UINT16_ELEMENTS: { |
+ Handle<FixedUint16Array> array( |
+ FixedUint16Array::cast(object->elements())); |
+ return FixedUint16Array::SetValue(array, index, value); |
+ } |
+ case INT16_ELEMENTS: { |
+ Handle<FixedInt16Array> array( |
+ FixedInt16Array::cast(object->elements())); |
+ return FixedInt16Array::SetValue(array, index, value); |
+ } |
+ case UINT32_ELEMENTS: { |
+ Handle<FixedUint32Array> array( |
+ FixedUint32Array::cast(object->elements())); |
+ return FixedUint32Array::SetValue(array, index, value); |
+ } |
+ case INT32_ELEMENTS: { |
+ Handle<FixedInt32Array> array( |
+ FixedInt32Array::cast(object->elements())); |
+ return FixedInt32Array::SetValue(array, index, value); |
+ } |
+ case FLOAT32_ELEMENTS: { |
+ Handle<FixedFloat32Array> array( |
+ FixedFloat32Array::cast(object->elements())); |
+ return FixedFloat32Array::SetValue(array, index, value); |
+ } |
+ case FLOAT64_ELEMENTS: { |
+ Handle<FixedFloat64Array> array( |
+ FixedFloat64Array::cast(object->elements())); |
+ return FixedFloat64Array::SetValue(array, index, value); |
+ } |
case DICTIONARY_ELEMENTS: |
return SetDictionaryElement(object, index, value, attributes, strict_mode, |
check_prototype, |
@@ -13132,11 +13226,21 @@ void JSObject::GetElementsCapacityAndUsage(int* capacity, int* used) { |
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: { |
// External arrays are considered 100% used. |
- ExternalArray* external_array = ExternalArray::cast(elements()); |
+ FixedArrayBase* external_array = FixedArrayBase::cast(elements()); |
*capacity = external_array->length(); |
*used = external_array->length(); |
break; |
+ } |
} |
} |
@@ -13644,8 +13748,17 @@ int JSObject::GetLocalElementKeys(FixedArray* storage, |
case EXTERNAL_INT_ELEMENTS: |
case EXTERNAL_UNSIGNED_INT_ELEMENTS: |
case EXTERNAL_FLOAT_ELEMENTS: |
- case EXTERNAL_DOUBLE_ELEMENTS: { |
- int length = ExternalArray::cast(elements())->length(); |
+ case EXTERNAL_DOUBLE_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: { |
+ int length = FixedArrayBase::cast(elements())->length(); |
while (counter < length) { |
if (storage != NULL) { |
storage->set(counter, Smi::FromInt(counter)); |