| Index: runtime/vm/raw_object_snapshot.cc
|
| diff --git a/runtime/vm/raw_object_snapshot.cc b/runtime/vm/raw_object_snapshot.cc
|
| index ccf9a76975d41a93beea3bdc18ade254133ca504..cc193fa18bb2f1a8e40c0ba7b0966ab9f76db8f3 100644
|
| --- a/runtime/vm/raw_object_snapshot.cc
|
| +++ b/runtime/vm/raw_object_snapshot.cc
|
| @@ -210,7 +210,9 @@ RawType* Type::ReadFrom(SnapshotReader* reader,
|
| // Allocate type object.
|
| Type& type = Type::ZoneHandle(reader->zone(), NEW_OBJECT(Type));
|
| bool is_canonical = RawObject::IsCanonical(tags);
|
| - bool defer_canonicalization = is_canonical && (kind != Snapshot::kFull);
|
| + bool defer_canonicalization = is_canonical &&
|
| + ((kind == Snapshot::kScript && RawObject::IsCreatedFromSnapshot(tags)) ||
|
| + kind == Snapshot::kMessage);
|
| reader->AddBackRef(object_id, &type, kIsDeserialized, defer_canonicalization);
|
|
|
| // Set all non object fields.
|
| @@ -451,7 +453,9 @@ RawTypeArguments* TypeArguments::ReadFrom(SnapshotReader* reader,
|
| TypeArguments& type_arguments = TypeArguments::ZoneHandle(
|
| reader->zone(), NEW_OBJECT_WITH_LEN_SPACE(TypeArguments, len, kind));
|
| bool is_canonical = RawObject::IsCanonical(tags);
|
| - bool defer_canonicalization = is_canonical && (kind != Snapshot::kFull);
|
| + bool defer_canonicalization = is_canonical &&
|
| + ((kind == Snapshot::kScript && RawObject::IsCreatedFromSnapshot(tags)) ||
|
| + kind == Snapshot::kMessage);
|
| reader->AddBackRef(object_id,
|
| &type_arguments,
|
| kIsDeserialized,
|
|
|