| Index: runtime/vm/raw_object_snapshot.cc
|
| ===================================================================
|
| --- runtime/vm/raw_object_snapshot.cc (revision 2094)
|
| +++ runtime/vm/raw_object_snapshot.cc (working copy)
|
| @@ -300,22 +300,26 @@
|
|
|
|
|
| RawTypeArguments* TypeArguments::ReadFrom(SnapshotReader* reader,
|
| - intptr_t object_id,
|
| - bool classes_serialized) {
|
| + intptr_t object_id,
|
| + bool classes_serialized) {
|
| ASSERT(reader != NULL);
|
|
|
| // Read the length so that we can determine instance size to allocate.
|
| RawSmi* smi_len = GetSmi(reader->Read<intptr_t>());
|
| intptr_t len = Smi::Value(smi_len);
|
| + Bool& is_canonical = Bool::Handle();
|
| + is_canonical ^= reader->ReadObject();
|
|
|
| - TypeArguments& type_array = TypeArguments::Handle(TypeArguments::New(len));
|
| - reader->AddBackwardReference(object_id, &type_array);
|
| + TypeArguments& type_arguments =
|
| + TypeArguments::Handle(TypeArguments::New(len));
|
| + type_arguments.set_is_canonical(is_canonical.raw() == Bool::True());
|
| + reader->AddBackwardReference(object_id, &type_arguments);
|
| AbstractType& type = AbstractType::Handle();
|
| for (intptr_t i = 0; i < len; i++) {
|
| type ^= reader->ReadObject();
|
| - type_array.SetTypeAt(i, type);
|
| + type_arguments.SetTypeAt(i, type);
|
| }
|
| - return type_array.raw();
|
| + return type_arguments.raw();
|
| }
|
|
|
|
|
| @@ -332,6 +336,7 @@
|
|
|
| // Write out the length field.
|
| writer->Write<RawObject*>(ptr()->length_);
|
| + writer->WriteObject(ptr()->is_canonical_);
|
|
|
| // Write out the individual types.
|
| intptr_t len = Smi::Value(ptr()->length_);
|
|
|