| Index: runtime/vm/raw_object_snapshot.cc
|
| ===================================================================
|
| --- runtime/vm/raw_object_snapshot.cc (revision 20600)
|
| +++ runtime/vm/raw_object_snapshot.cc (working copy)
|
| @@ -2230,169 +2230,12 @@
|
| }
|
|
|
|
|
| -RawByteArray* ByteArray::ReadFrom(SnapshotReader* reader,
|
| - intptr_t object_id,
|
| - intptr_t tags,
|
| - Snapshot::Kind kind) {
|
| - UNREACHABLE(); // ByteArray is an abstract class.
|
| - return ByteArray::null();
|
| -}
|
| -
|
| -
|
| -template<typename HandleT, typename RawT, typename ElementT>
|
| -RawT* ByteArray::ReadFromImpl(SnapshotReader* reader,
|
| - intptr_t object_id,
|
| - intptr_t tags,
|
| - Snapshot::Kind kind) {
|
| - ASSERT(reader != NULL);
|
| -
|
| - intptr_t len = reader->ReadSmiValue();
|
| - HandleT& result = HandleT::ZoneHandle(
|
| - reader->isolate(), HandleT::New(len, HEAP_SPACE(kind)));
|
| - reader->AddBackRef(object_id, &result, kIsDeserialized);
|
| -
|
| - // Set the object tags.
|
| - result.set_tags(tags);
|
| -
|
| - // Setup the array elements.
|
| - for (intptr_t i = 0; i < len; ++i) {
|
| - result.SetAt(i, reader->Read<ElementT>());
|
| - }
|
| - return result.raw();
|
| -}
|
| -
|
| -
|
| -#define BYTEARRAY_TYPE_LIST(V) \
|
| - V(Int8, int8, int8_t) \
|
| - V(Uint8, uint8, uint8_t) \
|
| - V(Uint8Clamped, uint8, uint8_t) \
|
| - V(Int16, int16, int16_t) \
|
| - V(Uint16, uint16, uint16_t) \
|
| - V(Int32, int32, int32_t) \
|
| - V(Uint32, uint32, uint32_t) \
|
| - V(Int64, int64, int64_t) \
|
| - V(Uint64, uint64, uint64_t) \
|
| - V(Float32, float32, float) \
|
| - V(Float64, float64, double) \
|
| -
|
| -
|
| -#define BYTEARRAY_READ_FROM(name, lname, type) \
|
| -Raw##name##Array* name##Array::ReadFrom(SnapshotReader* reader, \
|
| - intptr_t object_id, \
|
| - intptr_t tags, \
|
| - Snapshot::Kind kind) { \
|
| - return ReadFromImpl<name##Array, Raw##name##Array, type>(reader, \
|
| - object_id, \
|
| - tags, \
|
| - kind); \
|
| -} \
|
| -
|
| -
|
| -BYTEARRAY_TYPE_LIST(BYTEARRAY_READ_FROM)
|
| -#undef BYTEARRAY_READ_FROM
|
| -
|
| -
|
| -#define EXTERNALARRAY_READ_FROM(name, lname, type) \
|
| -RawExternal##name##Array* External##name##Array::ReadFrom( \
|
| - SnapshotReader* reader, \
|
| - intptr_t object_id, \
|
| - intptr_t tags, \
|
| - Snapshot::Kind kind) { \
|
| - ASSERT(kind != Snapshot::kFull); \
|
| - intptr_t length = reader->ReadSmiValue(); \
|
| - type* data = reinterpret_cast<type*>(reader->ReadIntptrValue()); \
|
| - const External##name##Array& obj = External##name##Array::Handle( \
|
| - External##name##Array::New(data, length)); \
|
| - void* peer = reinterpret_cast<void*>(reader->ReadIntptrValue()); \
|
| - Dart_WeakPersistentHandleFinalizer callback = \
|
| - reinterpret_cast<Dart_WeakPersistentHandleFinalizer>( \
|
| - reader->ReadIntptrValue()); \
|
| - obj.AddFinalizer(peer, callback); \
|
| - return obj.raw(); \
|
| -} \
|
| -
|
| -BYTEARRAY_TYPE_LIST(EXTERNALARRAY_READ_FROM)
|
| -#undef EXTERNALARRAY_READ_FROM
|
| -
|
| -
|
| -template<typename ElementT>
|
| -static void ByteArrayWriteTo(SnapshotWriter* writer,
|
| - intptr_t object_id,
|
| - Snapshot::Kind kind,
|
| - intptr_t byte_array_kind,
|
| - intptr_t tags,
|
| - RawSmi* length,
|
| - ElementT* data) {
|
| - ASSERT(writer != NULL);
|
| - intptr_t len = Smi::Value(length);
|
| -
|
| - // Write out the serialization header value for this object.
|
| - writer->WriteInlinedObjectHeader(object_id);
|
| -
|
| - // Write out the class and tags information.
|
| - writer->WriteIndexedObject(byte_array_kind);
|
| - writer->WriteIntptrValue(tags);
|
| -
|
| - // Write out the length field.
|
| - writer->Write<RawObject*>(length);
|
| -
|
| - // Write out the array elements.
|
| - for (intptr_t i = 0; i < len; i++) {
|
| - writer->Write(data[i]);
|
| - }
|
| -}
|
| -
|
| -
|
| -void RawByteArray::WriteTo(SnapshotWriter* writer,
|
| - intptr_t object_id,
|
| - Snapshot::Kind kind) {
|
| - UNREACHABLE(); // ByteArray is an abstract class
|
| -}
|
| -
|
| -
|
| -#define BYTEARRAY_WRITE_TO(name, lname, type) \
|
| -void Raw##name##Array::WriteTo(SnapshotWriter* writer, \
|
| - intptr_t object_id, \
|
| - Snapshot::Kind kind) { \
|
| - ByteArrayWriteTo(writer, \
|
| - object_id, \
|
| - kind, \
|
| - k##name##ArrayCid, \
|
| - writer->GetObjectTags(this), \
|
| - ptr()->length_, \
|
| - ptr()->data_); \
|
| -} \
|
| -
|
| -
|
| -BYTEARRAY_TYPE_LIST(BYTEARRAY_WRITE_TO)
|
| -#undef BYTEARRAY_WRITE_TO
|
| -
|
| -
|
| -#define EXTERNALARRAY_WRITE_TO(name, lname, type) \
|
| -void RawExternal##name##Array::WriteTo(SnapshotWriter* writer, \
|
| - intptr_t object_id, \
|
| - Snapshot::Kind kind) { \
|
| - ByteArrayWriteTo(writer, \
|
| - object_id, \
|
| - kind, \
|
| - k##name##ArrayCid, \
|
| - writer->GetObjectTags(this), \
|
| - ptr()->length_, \
|
| - ptr()->data_); \
|
| -} \
|
| -
|
| -
|
| -BYTEARRAY_TYPE_LIST(EXTERNALARRAY_WRITE_TO)
|
| -#undef BYTEARRAY_WRITE_TO
|
| -
|
| -#undef BYTEARRAY_TYPE_LIST
|
| -
|
| -
|
| #define TYPED_DATA_READ(setter, type) \
|
| for (intptr_t i = 0; i < lengthInBytes; i += element_size) { \
|
| result.Set##setter(i, reader->Read<type>()); \
|
| } \
|
|
|
| +
|
| RawTypedData* TypedData::ReadFrom(SnapshotReader* reader,
|
| intptr_t object_id,
|
| intptr_t tags,
|
|
|