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