| Index: vm/raw_object_snapshot.cc
|
| ===================================================================
|
| --- vm/raw_object_snapshot.cc (revision 8515)
|
| +++ vm/raw_object_snapshot.cc (working copy)
|
| @@ -41,7 +41,7 @@
|
| } else {
|
| cls = Class::GetClass(object_kind);
|
| }
|
| - reader->AddBackwardReference(object_id, &cls);
|
| + reader->AddBackRef(object_id, &cls, kIsDeserialized);
|
|
|
| // Set the object tags.
|
| cls.set_tags(tags);
|
| @@ -65,7 +65,7 @@
|
| // allocations may happen.
|
| intptr_t num_flds = (cls.raw()->to() - cls.raw()->from());
|
| for (intptr_t i = 0; i <= num_flds; i++) {
|
| - *(cls.raw()->from() + i) = reader->ReadObject();
|
| + *(cls.raw()->from() + i) = reader->ReadObjectRef();
|
| }
|
| } else {
|
| cls ^= reader->ReadClassId(object_id);
|
| @@ -118,7 +118,7 @@
|
| // Allocate parameterized type object.
|
| UnresolvedClass& unresolved_class = UnresolvedClass::ZoneHandle(
|
| reader->isolate(), NEW_OBJECT(UnresolvedClass));
|
| - reader->AddBackwardReference(object_id, &unresolved_class);
|
| + reader->AddBackRef(object_id, &unresolved_class, kIsDeserialized);
|
|
|
| // Set the object tags.
|
| unresolved_class.set_tags(tags);
|
| @@ -132,7 +132,7 @@
|
| intptr_t num_flds = (unresolved_class.raw()->to() -
|
| unresolved_class.raw()->from());
|
| for (intptr_t i = 0; i <= num_flds; i++) {
|
| - *(unresolved_class.raw()->from() + i) = reader->ReadObject();
|
| + *(unresolved_class.raw()->from() + i) = reader->ReadObjectRef();
|
| }
|
| return unresolved_class.raw();
|
| }
|
| @@ -184,7 +184,7 @@
|
| // Allocate parameterized type object.
|
| Type& parameterized_type = Type::ZoneHandle(
|
| reader->isolate(), NEW_OBJECT(Type));
|
| - reader->AddBackwardReference(object_id, ¶meterized_type);
|
| + reader->AddBackRef(object_id, ¶meterized_type, kIsDeserialized);
|
|
|
| // Set the object tags.
|
| parameterized_type.set_tags(tags);
|
| @@ -199,7 +199,7 @@
|
| intptr_t num_flds = (parameterized_type.raw()->to() -
|
| parameterized_type.raw()->from());
|
| for (intptr_t i = 0; i <= num_flds; i++) {
|
| - *(parameterized_type.raw()->from() + i) = reader->ReadObject();
|
| + *(parameterized_type.raw()->from() + i) = reader->ReadObjectImpl();
|
| }
|
|
|
| // If object needs to be a canonical object, Canonicalize it.
|
| @@ -226,7 +226,7 @@
|
| writer->Write<int8_t>(ptr()->type_state_);
|
|
|
| // Write out all the object pointer fields.
|
| - SnapshotWriterVisitor visitor(writer);
|
| + SnapshotWriterVisitor visitor(writer, false);
|
| visitor.VisitPointers(from(), to());
|
| }
|
|
|
| @@ -240,7 +240,7 @@
|
| // Allocate type parameter object.
|
| TypeParameter& type_parameter = TypeParameter::ZoneHandle(
|
| reader->isolate(), NEW_OBJECT(TypeParameter));
|
| - reader->AddBackwardReference(object_id, &type_parameter);
|
| + reader->AddBackRef(object_id, &type_parameter, kIsDeserialized);
|
|
|
| // Set the object tags.
|
| type_parameter.set_tags(tags);
|
| @@ -256,7 +256,7 @@
|
| intptr_t num_flds = (type_parameter.raw()->to() -
|
| type_parameter.raw()->from());
|
| for (intptr_t i = 0; i <= num_flds; i++) {
|
| - *(type_parameter.raw()->from() + i) = reader->ReadObject();
|
| + *(type_parameter.raw()->from() + i) = reader->ReadObjectImpl();
|
| }
|
|
|
| return type_parameter.raw();
|
| @@ -281,7 +281,7 @@
|
| writer->Write<int8_t>(ptr()->type_state_);
|
|
|
| // Write out all the object pointer fields.
|
| - SnapshotWriterVisitor visitor(writer);
|
| + SnapshotWriterVisitor visitor(writer, false);
|
| visitor.VisitPointers(from(), to());
|
| }
|
|
|
| @@ -314,11 +314,11 @@
|
|
|
| TypeArguments& type_arguments = TypeArguments::ZoneHandle(
|
| reader->isolate(), NEW_OBJECT_WITH_LEN(TypeArguments, len));
|
| - reader->AddBackwardReference(object_id, &type_arguments);
|
| + reader->AddBackRef(object_id, &type_arguments, kIsDeserialized);
|
|
|
| // Now set all the object fields.
|
| for (intptr_t i = 0; i < len; i++) {
|
| - *reader->TypeHandle() ^= reader->ReadObject();
|
| + *reader->TypeHandle() ^= reader->ReadObjectImpl();
|
| type_arguments.SetTypeAt(i, *reader->TypeHandle());
|
| }
|
|
|
| @@ -353,7 +353,7 @@
|
| // Write out the individual types.
|
| intptr_t len = Smi::Value(ptr()->length_);
|
| for (intptr_t i = 0; i < len; i++) {
|
| - writer->WriteObject(ptr()->types_[i]);
|
| + writer->WriteObjectImpl(ptr()->types_[i]);
|
| }
|
| }
|
|
|
| @@ -370,7 +370,7 @@
|
| InstantiatedTypeArguments& instantiated_type_arguments =
|
| InstantiatedTypeArguments::ZoneHandle(reader->isolate(),
|
| InstantiatedTypeArguments::New());
|
| - reader->AddBackwardReference(object_id, &instantiated_type_arguments);
|
| + reader->AddBackRef(object_id, &instantiated_type_arguments, kIsDeserialized);
|
|
|
| // Set the object tags.
|
| instantiated_type_arguments.set_tags(tags);
|
| @@ -381,7 +381,7 @@
|
| intptr_t num_flds = (instantiated_type_arguments.raw()->to() -
|
| instantiated_type_arguments.raw()->from());
|
| for (intptr_t i = 0; i <= num_flds; i++) {
|
| - *(instantiated_type_arguments.raw()->from() + i) = reader->ReadObject();
|
| + *(instantiated_type_arguments.raw()->from() + i) = reader->ReadObjectImpl();
|
| }
|
| return instantiated_type_arguments.raw();
|
| }
|
| @@ -401,7 +401,7 @@
|
| writer->GetObjectTags(this));
|
|
|
| // Write out all the object pointer fields.
|
| - SnapshotWriterVisitor visitor(writer);
|
| + SnapshotWriterVisitor visitor(writer, false);
|
| visitor.VisitPointers(from(), to());
|
| }
|
|
|
| @@ -416,7 +416,7 @@
|
| // Allocate function object.
|
| Function& func = Function::ZoneHandle(
|
| reader->isolate(), NEW_OBJECT(Function));
|
| - reader->AddBackwardReference(object_id, &func);
|
| + reader->AddBackRef(object_id, &func, kIsDeserialized);
|
|
|
| // Set the object tags.
|
| func.set_tags(tags);
|
| @@ -438,7 +438,7 @@
|
| // allocations may happen.
|
| intptr_t num_flds = (func.raw()->to() - func.raw()->from());
|
| for (intptr_t i = 0; i <= num_flds; i++) {
|
| - *(func.raw()->from() + i) = reader->ReadObject();
|
| + *(func.raw()->from() + i) = reader->ReadObjectRef();
|
| }
|
|
|
| return func.raw();
|
| @@ -486,7 +486,7 @@
|
|
|
| // Allocate field object.
|
| Field& field = Field::ZoneHandle(reader->isolate(), NEW_OBJECT(Field));
|
| - reader->AddBackwardReference(object_id, &field);
|
| + reader->AddBackRef(object_id, &field, kIsDeserialized);
|
|
|
| // Set the object tags.
|
| field.set_tags(tags);
|
| @@ -502,7 +502,7 @@
|
| // allocations may happen.
|
| intptr_t num_flds = (field.raw()->to() - field.raw()->from());
|
| for (intptr_t i = 0; i <= num_flds; i++) {
|
| - *(field.raw()->from() + i) = reader->ReadObject();
|
| + *(field.raw()->from() + i) = reader->ReadObjectRef();
|
| }
|
|
|
| return field.raw();
|
| @@ -544,7 +544,7 @@
|
| // Create the literal token object.
|
| LiteralToken& literal_token = LiteralToken::ZoneHandle(
|
| reader->isolate(), NEW_OBJECT(LiteralToken));
|
| - reader->AddBackwardReference(object_id, &literal_token);
|
| + reader->AddBackRef(object_id, &literal_token, kIsDeserialized);
|
|
|
| // Set the object tags.
|
| literal_token.set_tags(tags);
|
| @@ -552,9 +552,9 @@
|
| // Read the token attributes.
|
| Token::Kind token_kind = static_cast<Token::Kind>(reader->ReadIntptrValue());
|
| literal_token.set_kind(token_kind);
|
| - *reader->StringHandle() ^= reader->ReadObject();
|
| + *reader->StringHandle() ^= reader->ReadObjectImpl();
|
| literal_token.set_literal(*reader->StringHandle());
|
| - *reader->ObjectHandle() = reader->ReadObject();
|
| + *reader->ObjectHandle() = reader->ReadObjectImpl();
|
| literal_token.set_value(*reader->ObjectHandle());
|
|
|
| return literal_token.raw();
|
| @@ -578,8 +578,8 @@
|
| writer->Write<intptr_t>(ptr()->kind_);
|
|
|
| // Write out literal and value fields.
|
| - writer->WriteObject(ptr()->literal_);
|
| - writer->WriteObject(ptr()->value_);
|
| + writer->WriteObjectImpl(ptr()->literal_);
|
| + writer->WriteObjectImpl(ptr()->value_);
|
| }
|
|
|
|
|
| @@ -596,14 +596,14 @@
|
| // Create the token stream object.
|
| TokenStream& token_stream = TokenStream::ZoneHandle(
|
| reader->isolate(), NEW_OBJECT_WITH_LEN(TokenStream, len));
|
| - reader->AddBackwardReference(object_id, &token_stream);
|
| + reader->AddBackRef(object_id, &token_stream, kIsDeserialized);
|
|
|
| // Set the object tags.
|
| token_stream.set_tags(tags);
|
|
|
| // Read the token stream into the TokenStream.
|
| for (intptr_t i = 0; i < len; i++) {
|
| - *reader->ObjectHandle() = reader->ReadObject();
|
| + *reader->ObjectHandle() = reader->ReadObjectImpl();
|
| token_stream.SetTokenAt(i, *reader->ObjectHandle());
|
| }
|
| return token_stream.raw();
|
| @@ -630,7 +630,7 @@
|
| // Write out the token stream (token kind and literal).
|
| intptr_t len = Smi::Value(ptr()->length_);
|
| for (intptr_t i = 0; i < TokenStream::StreamLength(len); i++) {
|
| - writer->WriteObject(ptr()->data_[i]);
|
| + writer->WriteObjectImpl(ptr()->data_[i]);
|
| }
|
| }
|
|
|
| @@ -644,7 +644,7 @@
|
|
|
| // Allocate script object.
|
| Script& script = Script::ZoneHandle(reader->isolate(), NEW_OBJECT(Script));
|
| - reader->AddBackwardReference(object_id, &script);
|
| + reader->AddBackRef(object_id, &script, kIsDeserialized);
|
|
|
| // Set the object tags.
|
| script.set_tags(tags);
|
| @@ -652,12 +652,12 @@
|
| // Set all the object fields.
|
| // TODO(5411462): Need to assert No GC can happen here, even though
|
| // allocations may happen.
|
| - *reader->StringHandle() ^= reader->ReadObject();
|
| + *reader->StringHandle() ^= reader->ReadObjectImpl();
|
| script.set_url(*reader->StringHandle());
|
| *reader->StringHandle() ^= String::null();
|
| script.set_source(*reader->StringHandle());
|
| TokenStream& stream = TokenStream::Handle();
|
| - stream ^= reader->ReadObject();
|
| + stream ^= reader->ReadObjectImpl();
|
| script.set_tokens(stream);
|
|
|
| return script.raw();
|
| @@ -679,8 +679,8 @@
|
| writer->WriteObjectHeader(Object::kScriptClass, writer->GetObjectTags(this));
|
|
|
| // Write out all the object pointer fields.
|
| - writer->WriteObject(ptr()->url_);
|
| - writer->WriteObject(ptr()->tokens_);
|
| + writer->WriteObjectImpl(ptr()->url_);
|
| + writer->WriteObjectImpl(ptr()->tokens_);
|
| }
|
|
|
|
|
| @@ -692,12 +692,12 @@
|
| ASSERT(kind != Snapshot::kMessage);
|
|
|
| Library& library = Library::ZoneHandle(reader->isolate(), Library::null());
|
| - reader->AddBackwardReference(object_id, &library);
|
| + reader->AddBackRef(object_id, &library, kIsDeserialized);
|
|
|
| if (RawObject::IsCreatedFromSnapshot(tags)) {
|
| ASSERT(kind != Snapshot::kFull);
|
| // Lookup the object as it should already exist in the heap.
|
| - *reader->StringHandle() ^= reader->ReadObject();
|
| + *reader->StringHandle() ^= reader->ReadObjectImpl();
|
| library = Library::LookupLibrary(*reader->StringHandle());
|
| } else {
|
| // Allocate library object.
|
| @@ -727,7 +727,7 @@
|
| // allocations may happen.
|
| intptr_t num_flds = (library.raw()->to() - library.raw()->from());
|
| for (intptr_t i = 0; i <= num_flds; i++) {
|
| - *(library.raw()->from() + i) = reader->ReadObject();
|
| + *(library.raw()->from() + i) = reader->ReadObjectRef();
|
| }
|
| if (kind != Snapshot::kFull) {
|
| library.Register();
|
| @@ -752,7 +752,7 @@
|
| if (RawObject::IsCreatedFromSnapshot(writer->GetObjectTags(this))) {
|
| ASSERT(kind != Snapshot::kFull);
|
| // Write out library URL so that it can be looked up when reading.
|
| - writer->WriteObject(ptr()->url_);
|
| + writer->WriteObjectImpl(ptr()->url_);
|
| } else {
|
| // Write out all non object fields.
|
| writer->WriteIntptrValue(ptr()->index_);
|
| @@ -786,7 +786,7 @@
|
| // Allocate library prefix object.
|
| LibraryPrefix& prefix = LibraryPrefix::ZoneHandle(
|
| reader->isolate(), NEW_OBJECT(LibraryPrefix));
|
| - reader->AddBackwardReference(object_id, &prefix);
|
| + reader->AddBackRef(object_id, &prefix, kIsDeserialized);
|
|
|
| // Set the object tags.
|
| prefix.set_tags(tags);
|
| @@ -799,7 +799,7 @@
|
| // allocations may happen.
|
| intptr_t num_flds = (prefix.raw()->to() - prefix.raw()->from());
|
| for (intptr_t i = 0; i <= num_flds; i++) {
|
| - *(prefix.raw()->from() + i) = reader->ReadObject();
|
| + *(prefix.raw()->from() + i) = reader->ReadObjectRef();
|
| }
|
|
|
| return prefix.raw();
|
| @@ -941,7 +941,7 @@
|
| } else {
|
| context = Context::New(num_vars);
|
| }
|
| - reader->AddBackwardReference(object_id, &context);
|
| + reader->AddBackRef(object_id, &context, kIsDeserialized);
|
|
|
| // Set the object tags.
|
| context.set_tags(tags);
|
| @@ -954,7 +954,7 @@
|
| // allocations may happen.
|
| intptr_t num_flds = (context.raw()->to(num_vars) - context.raw()->from());
|
| for (intptr_t i = 0; i <= num_flds; i++) {
|
| - *(context.raw()->from() + i) = reader->ReadObject();
|
| + *(context.raw()->from() + i) = reader->ReadObjectRef();
|
| }
|
|
|
| return context.raw();
|
| @@ -994,7 +994,7 @@
|
| intptr_t num_vars = reader->ReadIntptrValue();
|
| ContextScope& scope = ContextScope::ZoneHandle(reader->isolate(),
|
| ContextScope::New(num_vars));
|
| - reader->AddBackwardReference(object_id, &scope);
|
| + reader->AddBackRef(object_id, &scope, kIsDeserialized);
|
|
|
| // Set the object tags.
|
| scope.set_tags(tags);
|
| @@ -1004,7 +1004,7 @@
|
| // allocations may happen.
|
| intptr_t num_flds = (scope.raw()->to(num_vars) - scope.raw()->from());
|
| for (intptr_t i = 0; i <= num_flds; i++) {
|
| - *(scope.raw()->from() + i) = reader->ReadObject();
|
| + *(scope.raw()->from() + i) = reader->ReadObjectRef();
|
| }
|
|
|
| return scope.raw();
|
| @@ -1181,7 +1181,7 @@
|
| mint = Mint::New(value, Heap::kNew);
|
| }
|
| }
|
| - reader->AddBackwardReference(object_id, &mint);
|
| + reader->AddBackRef(object_id, &mint, kIsDeserialized);
|
|
|
| // Set the object tags.
|
| mint.set_tags(tags);
|
| @@ -1229,7 +1229,7 @@
|
| if ((kind != Snapshot::kFull) && RawObject::IsCanonical(tags)) {
|
| obj ^= obj.Canonicalize();
|
| }
|
| - reader->AddBackwardReference(object_id, &obj);
|
| + reader->AddBackRef(object_id, &obj, kIsDeserialized);
|
|
|
| // Set the object tags.
|
| obj.set_tags(tags);
|
| @@ -1301,7 +1301,7 @@
|
| dbl = Double::New(value, Heap::kNew);
|
| }
|
| }
|
| - reader->AddBackwardReference(object_id, &dbl);
|
| + reader->AddBackRef(object_id, &dbl, kIsDeserialized);
|
|
|
| // Set the object tags.
|
| dbl.set_tags(tags);
|
| @@ -1394,7 +1394,7 @@
|
| } else {
|
| ReadFromImpl<OneByteString, uint8_t>(reader, &str_obj, len, tags);
|
| }
|
| - reader->AddBackwardReference(object_id, &str_obj);
|
| + reader->AddBackRef(object_id, &str_obj, kIsDeserialized);
|
| return str_obj.raw();
|
| }
|
|
|
| @@ -1425,7 +1425,7 @@
|
| } else {
|
| ReadFromImpl<TwoByteString, uint16_t>(reader, &str_obj, len, tags);
|
| }
|
| - reader->AddBackwardReference(object_id, &str_obj);
|
| + reader->AddBackRef(object_id, &str_obj, kIsDeserialized);
|
| return str_obj.raw();
|
| }
|
|
|
| @@ -1456,7 +1456,7 @@
|
| } else {
|
| ReadFromImpl<FourByteString, uint32_t>(reader, &str_obj, len, tags);
|
| }
|
| - reader->AddBackwardReference(object_id, &str_obj);
|
| + reader->AddBackRef(object_id, &str_obj, kIsDeserialized);
|
| return str_obj.raw();
|
| }
|
|
|
| @@ -1625,26 +1625,6 @@
|
| }
|
|
|
|
|
| -static void ArrayReadFrom(SnapshotReader* reader,
|
| - const Array& result,
|
| - intptr_t len,
|
| - intptr_t tags) {
|
| - ASSERT(reader != NULL);
|
| -
|
| - // Set the object tags.
|
| - result.set_tags(tags);
|
| -
|
| - // Setup the object fields.
|
| - *reader->TypeArgumentsHandle() ^= reader->ReadObject();
|
| - result.SetTypeArguments(*reader->TypeArgumentsHandle());
|
| -
|
| - for (intptr_t i = 0; i < len; i++) {
|
| - *reader->ObjectHandle() = reader->ReadObject();
|
| - result.SetAt(i, *reader->ObjectHandle());
|
| - }
|
| -}
|
| -
|
| -
|
| RawArray* Array::ReadFrom(SnapshotReader* reader,
|
| intptr_t object_id,
|
| intptr_t tags,
|
| @@ -1653,11 +1633,15 @@
|
|
|
| // Read the length so that we can determine instance size to allocate.
|
| intptr_t len = reader->ReadSmiValue();
|
| - Array& array = Array::ZoneHandle(reader->isolate(),
|
| - NEW_OBJECT_WITH_LEN(Array, len));
|
| - reader->AddBackwardReference(object_id, &array);
|
| - ArrayReadFrom(reader, array, len, tags);
|
| - return array.raw();
|
| + Array* array = reinterpret_cast<Array*>(
|
| + reader->GetBackRef(object_id));
|
| + if (array == NULL) {
|
| + array = &(Array::ZoneHandle(reader->isolate(),
|
| + NEW_OBJECT_WITH_LEN(Array, len)));
|
| + reader->AddBackRef(object_id, array, kIsDeserialized);
|
| + }
|
| + reader->ArrayReadFrom(*array, len, tags);
|
| + return array->raw();
|
| }
|
|
|
|
|
| @@ -1669,69 +1653,39 @@
|
|
|
| // Read the length so that we can determine instance size to allocate.
|
| intptr_t len = reader->ReadSmiValue();
|
| - ImmutableArray& array = ImmutableArray::ZoneHandle(
|
| - reader->isolate(), NEW_OBJECT_WITH_LEN(ImmutableArray, len));
|
| - reader->AddBackwardReference(object_id, &array);
|
| - ArrayReadFrom(reader, array, len, tags);
|
| - return array.raw();
|
| -}
|
| -
|
| -
|
| -static void ArrayWriteTo(SnapshotWriter* writer,
|
| - intptr_t object_id,
|
| - Snapshot::Kind kind,
|
| - intptr_t array_kind,
|
| - intptr_t tags,
|
| - RawSmi* length,
|
| - RawAbstractTypeArguments* type_arguments,
|
| - RawObject* data[]) {
|
| - ASSERT(writer != NULL);
|
| - intptr_t len = Smi::Value(length);
|
| -
|
| - // Write out the serialization header value for this object.
|
| - writer->WriteSerializationMarker(kInlined, object_id);
|
| -
|
| - // Write out the class and tags information.
|
| - writer->WriteObjectHeader(array_kind, tags);
|
| -
|
| - // Write out the length field.
|
| - writer->Write<RawObject*>(length);
|
| -
|
| - // Write out the type arguments.
|
| - writer->WriteObject(type_arguments);
|
| -
|
| - // Write out the individual objects.
|
| - for (intptr_t i = 0; i < len; i++) {
|
| - writer->WriteObject(data[i]);
|
| + ImmutableArray* array = reinterpret_cast<ImmutableArray*>(
|
| + reader->GetBackRef(object_id));
|
| + if (array == NULL) {
|
| + array = &(ImmutableArray::ZoneHandle(
|
| + reader->isolate(), NEW_OBJECT_WITH_LEN(ImmutableArray, len)));
|
| + reader->AddBackRef(object_id, array, kIsDeserialized);
|
| }
|
| + reader->ArrayReadFrom(*array, len, tags);
|
| + return array->raw();
|
| }
|
|
|
|
|
| void RawArray::WriteTo(SnapshotWriter* writer,
|
| intptr_t object_id,
|
| Snapshot::Kind kind) {
|
| - ArrayWriteTo(writer,
|
| - object_id,
|
| - kind,
|
| - ObjectStore::kArrayClass,
|
| - writer->GetObjectTags(this),
|
| - ptr()->length_,
|
| - ptr()->type_arguments_,
|
| - ptr()->data());
|
| + writer->ArrayWriteTo(object_id,
|
| + ObjectStore::kArrayClass,
|
| + writer->GetObjectTags(this),
|
| + ptr()->length_,
|
| + ptr()->type_arguments_,
|
| + ptr()->data());
|
| }
|
|
|
|
|
| void RawImmutableArray::WriteTo(SnapshotWriter* writer,
|
| intptr_t object_id,
|
| Snapshot::Kind kind) {
|
| - ArrayWriteTo(writer,
|
| - object_id,
|
| - kind,
|
| - ObjectStore::kImmutableArrayClass,
|
| - writer->GetObjectTags(this),
|
| - ptr()->length_,
|
| - ptr()->type_arguments_,
|
| - ptr()->data());
|
| + writer->ArrayWriteTo(object_id,
|
| + ObjectStore::kImmutableArrayClass,
|
| + writer->GetObjectTags(this),
|
| + ptr()->length_,
|
| + ptr()->type_arguments_,
|
| + ptr()->data());
|
| }
|
|
|
|
|
| @@ -1749,11 +1703,11 @@
|
| } else {
|
| array = GrowableObjectArray::New(0);
|
| }
|
| - reader->AddBackwardReference(object_id, &array);
|
| + reader->AddBackRef(object_id, &array, kIsDeserialized);
|
| intptr_t length = reader->ReadSmiValue();
|
| array.SetLength(length);
|
| Array& contents = Array::Handle();
|
| - contents ^= reader->ReadObject();
|
| + contents ^= reader->ReadObjectImpl();
|
| array.SetData(contents);
|
| const AbstractTypeArguments& type_arguments =
|
| AbstractTypeArguments::Handle(contents.GetTypeArguments());
|
| @@ -1778,7 +1732,7 @@
|
| writer->Write<RawObject*>(ptr()->length_);
|
|
|
| // Write out the Array object.
|
| - writer->WriteObject(ptr()->data_);
|
| + writer->WriteObjectImpl(ptr()->data_);
|
| }
|
|
|
|
|
| @@ -1802,7 +1756,7 @@
|
| Heap::Space space = (kind == Snapshot::kFull) ? Heap::kOld : Heap::kNew;
|
| HandleT& result =
|
| HandleT::ZoneHandle(reader->isolate(), HandleT::New(len, space));
|
| - reader->AddBackwardReference(object_id, &result);
|
| + reader->AddBackRef(object_id, &result, kIsDeserialized);
|
|
|
| // Set the object tags.
|
| result.set_tags(tags);
|
| @@ -1975,14 +1929,14 @@
|
| JSRegExp& regex = JSRegExp::ZoneHandle(
|
| reader->isolate(),
|
| JSRegExp::New(len, (kind == Snapshot::kFull) ? Heap::kOld : Heap::kNew));
|
| - reader->AddBackwardReference(object_id, ®ex);
|
| + reader->AddBackRef(object_id, ®ex, kIsDeserialized);
|
|
|
| // Set the object tags.
|
| regex.set_tags(tags);
|
|
|
| // Read and Set all the other fields.
|
| regex.raw_ptr()->num_bracket_expressions_ = reader->ReadAsSmi();
|
| - *reader->StringHandle() ^= reader->ReadObject();
|
| + *reader->StringHandle() ^= reader->ReadObjectImpl();
|
| regex.raw_ptr()->pattern_ = (*reader->StringHandle()).raw();
|
| regex.raw_ptr()->type_ = reader->ReadIntptrValue();
|
| regex.raw_ptr()->flags_ = reader->ReadIntptrValue();
|
| @@ -2011,7 +1965,7 @@
|
|
|
| // Write out all the other fields.
|
| writer->Write<RawObject*>(ptr()->num_bracket_expressions_);
|
| - writer->WriteObject(ptr()->pattern_);
|
| + writer->WriteObjectImpl(ptr()->pattern_);
|
| writer->WriteIntptrValue(ptr()->type_);
|
| writer->WriteIntptrValue(ptr()->flags_);
|
|
|
|
|