Chromium Code Reviews| Index: src/objects-inl.h |
| diff --git a/src/objects-inl.h b/src/objects-inl.h |
| index 823b2dadc8ca5d0bdc3a36e519354bf7e8ad00f0..2ed658c7ed4c3a7faddbc5db22d281d8d561cab7 100644 |
| --- a/src/objects-inl.h |
| +++ b/src/objects-inl.h |
| @@ -406,6 +406,13 @@ bool Object::IsExternalFloatArray() { |
| } |
| +bool Object::IsExternalDoubleArray() { |
| + return Object::IsHeapObject() && |
| + HeapObject::cast(this)->map()->instance_type() == |
| + EXTERNAL_DOUBLE_ARRAY_TYPE; |
| +} |
| + |
| + |
| bool MaybeObject::IsFailure() { |
| return HAS_FAILURE_TAG(this); |
| } |
| @@ -1901,6 +1908,7 @@ CAST_ACCESSOR(ExternalUnsignedShortArray) |
| CAST_ACCESSOR(ExternalIntArray) |
| CAST_ACCESSOR(ExternalUnsignedIntArray) |
| CAST_ACCESSOR(ExternalFloatArray) |
| +CAST_ACCESSOR(ExternalDoubleArray) |
| CAST_ACCESSOR(ExternalPixelArray) |
| CAST_ACCESSOR(Struct) |
| @@ -2315,6 +2323,20 @@ void ExternalFloatArray::set(int index, float value) { |
| } |
| +double ExternalDoubleArray::get(int index) { |
| + ASSERT((index >= 0) && (index < this->length())); |
| + double* ptr = static_cast<double*>(external_pointer()); |
| + return ptr[index]; |
| +} |
| + |
| + |
| +void ExternalDoubleArray::set(int index, double value) { |
| + ASSERT((index >= 0) && (index < this->length())); |
| + double* ptr = static_cast<double*>(external_pointer()); |
| + ptr[index] = value; |
| +} |
| + |
| + |
| int Map::visitor_id() { |
| return READ_BYTE_FIELD(this, kVisitorIdOffset); |
| } |
| @@ -3638,14 +3660,18 @@ JSObject::ElementsKind JSObject::GetElementsKind() { |
| return EXTERNAL_INT_ELEMENTS; |
| case EXTERNAL_UNSIGNED_INT_ARRAY_TYPE: |
| return EXTERNAL_UNSIGNED_INT_ELEMENTS; |
| + case EXTERNAL_FLOAT_ARRAY_TYPE: |
| + return EXTERNAL_FLOAT_ELEMENTS; |
| + case EXTERNAL_DOUBLE_ARRAY_TYPE: |
| + return EXTERNAL_DOUBLE_ELEMENTS; |
| case EXTERNAL_PIXEL_ARRAY_TYPE: |
| return EXTERNAL_PIXEL_ELEMENTS; |
| default: |
|
danno
2011/04/18 16:36:28
Take out the default since you now cover all cases
Jakob Kummerow
2011/04/20 15:01:13
No. There's a bunch of other values in the enum In
|
| break; |
| } |
| } |
| - ASSERT(array->map()->instance_type() == EXTERNAL_FLOAT_ARRAY_TYPE); |
| - return EXTERNAL_FLOAT_ELEMENTS; |
| + UNREACHABLE(); |
| + return DICTIONARY_ELEMENTS; |
| } |
| @@ -3686,6 +3712,8 @@ EXTERNAL_ELEMENTS_CHECK(UnsignedInt, |
| EXTERNAL_UNSIGNED_INT_ARRAY_TYPE) |
| EXTERNAL_ELEMENTS_CHECK(Float, |
| EXTERNAL_FLOAT_ARRAY_TYPE) |
| +EXTERNAL_ELEMENTS_CHECK(Double, |
| + EXTERNAL_DOUBLE_ARRAY_TYPE) |
| EXTERNAL_ELEMENTS_CHECK(Pixel, EXTERNAL_PIXEL_ARRAY_TYPE) |