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); |