Chromium Code Reviews| Index: src/objects-inl.h |
| diff --git a/src/objects-inl.h b/src/objects-inl.h |
| index f926cd471a29107cb79d3e1a9b8f3a683a8e1a48..a5349af90483c2564c4a4f725fe3575db776f5a8 100644 |
| --- a/src/objects-inl.h |
| +++ b/src/objects-inl.h |
| @@ -1746,6 +1746,40 @@ FixedArrayBase* FixedArrayBase::cast(Object* object) { |
| } |
| +ElementsKind FixedArrayBase::GetElementsKind() { |
|
Michael Starzinger
2012/11/29 09:39:32
I don't like moving this outside of elements acces
Toon Verwaest
2012/11/29 14:04:40
Done.
|
| + switch (map()->instance_type()) { |
| + case FIXED_ARRAY_TYPE: |
| + if (IsDictionary()) { |
| + return DICTIONARY_ELEMENTS; |
| + } else { |
| + return FAST_HOLEY_ELEMENTS; |
| + } |
| + case FIXED_DOUBLE_ARRAY_TYPE: |
| + return FAST_HOLEY_DOUBLE_ELEMENTS; |
| + case EXTERNAL_BYTE_ARRAY_TYPE: |
| + return EXTERNAL_BYTE_ELEMENTS; |
| + case EXTERNAL_UNSIGNED_BYTE_ARRAY_TYPE: |
| + return EXTERNAL_UNSIGNED_BYTE_ELEMENTS; |
| + case EXTERNAL_SHORT_ARRAY_TYPE: |
| + return EXTERNAL_SHORT_ELEMENTS; |
| + case EXTERNAL_UNSIGNED_SHORT_ARRAY_TYPE: |
| + return EXTERNAL_UNSIGNED_SHORT_ELEMENTS; |
| + case EXTERNAL_INT_ARRAY_TYPE: |
| + 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: |
| + UNREACHABLE(); |
| + } |
| + return FAST_HOLEY_ELEMENTS; |
| +} |
| + |
| Object* FixedArray::get(int index) { |
| ASSERT(index >= 0 && index < this->length()); |
| return READ_FIELD(this, kHeaderSize + index * kPointerSize); |