Index: runtime/vm/object.cc |
=================================================================== |
--- runtime/vm/object.cc (revision 36576) |
+++ runtime/vm/object.cc (working copy) |
@@ -13054,6 +13054,50 @@ |
} |
+intptr_t Instance::ElementSizeFor(intptr_t cid) { |
+ if (RawObject::IsExternalTypedDataClassId(cid)) { |
+ return ExternalTypedData::ElementSizeInBytes(cid); |
+ } else if (RawObject::IsTypedDataClassId(cid)) { |
+ return TypedData::ElementSizeInBytes(cid); |
+ } |
+ switch (cid) { |
+ case kArrayCid: |
+ case kImmutableArrayCid: |
+ return Array::kBytesPerElement; |
+ case kOneByteStringCid: |
+ return OneByteString::kBytesPerElement; |
+ case kTwoByteStringCid: |
+ return TwoByteString::kBytesPerElement; |
+ default: |
+ UNIMPLEMENTED(); |
+ return 0; |
+ } |
+} |
+ |
+ |
+intptr_t Instance::DataOffsetFor(intptr_t cid) { |
+ if (RawObject::IsExternalTypedDataClassId(cid)) { |
+ // Elements start at offset 0 of the external data. |
+ return 0; |
+ } |
+ if (RawObject::IsTypedDataClassId(cid)) { |
+ return TypedData::data_offset(); |
+ } |
+ switch (cid) { |
+ case kArrayCid: |
+ case kImmutableArrayCid: |
+ return Array::data_offset(); |
+ case kOneByteStringCid: |
+ return OneByteString::data_offset(); |
+ case kTwoByteStringCid: |
+ return TwoByteString::data_offset(); |
+ default: |
+ UNIMPLEMENTED(); |
+ return Array::data_offset(); |
+ } |
+} |
+ |
+ |
const char* Instance::ToCString() const { |
if (IsNull()) { |
return "null"; |