| OLD | NEW |
| 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 #include "vm/object.h" | 5 #include "vm/object.h" |
| 6 #include "vm/object_store.h" | 6 #include "vm/object_store.h" |
| 7 #include "vm/snapshot.h" | 7 #include "vm/snapshot.h" |
| 8 #include "vm/stub_code.h" | 8 #include "vm/stub_code.h" |
| 9 #include "vm/symbols.h" | 9 #include "vm/symbols.h" |
| 10 #include "vm/visitor.h" | 10 #include "vm/visitor.h" |
| (...skipping 10 matching lines...) Expand all Loading... |
| 21 ((kind == Snapshot::kFull) ? \ | 21 ((kind == Snapshot::kFull) ? \ |
| 22 reader->New##type(len) : type::New(len, HEAP_SPACE(kind))) | 22 reader->New##type(len) : type::New(len, HEAP_SPACE(kind))) |
| 23 | 23 |
| 24 | 24 |
| 25 RawClass* Class::ReadFrom(SnapshotReader* reader, | 25 RawClass* Class::ReadFrom(SnapshotReader* reader, |
| 26 intptr_t object_id, | 26 intptr_t object_id, |
| 27 intptr_t tags, | 27 intptr_t tags, |
| 28 Snapshot::Kind kind) { | 28 Snapshot::Kind kind) { |
| 29 ASSERT(reader != NULL); | 29 ASSERT(reader != NULL); |
| 30 | 30 |
| 31 Class& cls = Class::ZoneHandle(reader->isolate(), Class::null()); | 31 Class& cls = Class::ZoneHandle(reader->zone(), Class::null()); |
| 32 if ((kind == Snapshot::kFull) || | 32 if ((kind == Snapshot::kFull) || |
| 33 (kind == Snapshot::kScript && !RawObject::IsCreatedFromSnapshot(tags))) { | 33 (kind == Snapshot::kScript && !RawObject::IsCreatedFromSnapshot(tags))) { |
| 34 // Read in the base information. | 34 // Read in the base information. |
| 35 int32_t class_id = reader->Read<int32_t>(); | 35 int32_t class_id = reader->Read<int32_t>(); |
| 36 | 36 |
| 37 // Allocate class object of specified kind. | 37 // Allocate class object of specified kind. |
| 38 if (kind == Snapshot::kFull) { | 38 if (kind == Snapshot::kFull) { |
| 39 cls = reader->NewClass(class_id); | 39 cls = reader->NewClass(class_id); |
| 40 } else { | 40 } else { |
| 41 if (class_id < kNumPredefinedCids) { | 41 if (class_id < kNumPredefinedCids) { |
| (...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 132 | 132 |
| 133 | 133 |
| 134 RawUnresolvedClass* UnresolvedClass::ReadFrom(SnapshotReader* reader, | 134 RawUnresolvedClass* UnresolvedClass::ReadFrom(SnapshotReader* reader, |
| 135 intptr_t object_id, | 135 intptr_t object_id, |
| 136 intptr_t tags, | 136 intptr_t tags, |
| 137 Snapshot::Kind kind) { | 137 Snapshot::Kind kind) { |
| 138 ASSERT(reader != NULL); | 138 ASSERT(reader != NULL); |
| 139 | 139 |
| 140 // Allocate unresolved class object. | 140 // Allocate unresolved class object. |
| 141 UnresolvedClass& unresolved_class = UnresolvedClass::ZoneHandle( | 141 UnresolvedClass& unresolved_class = UnresolvedClass::ZoneHandle( |
| 142 reader->isolate(), NEW_OBJECT(UnresolvedClass)); | 142 reader->zone(), NEW_OBJECT(UnresolvedClass)); |
| 143 reader->AddBackRef(object_id, &unresolved_class, kIsDeserialized); | 143 reader->AddBackRef(object_id, &unresolved_class, kIsDeserialized); |
| 144 | 144 |
| 145 // Set the object tags. | 145 // Set the object tags. |
| 146 unresolved_class.set_tags(tags); | 146 unresolved_class.set_tags(tags); |
| 147 | 147 |
| 148 // Set all non object fields. | 148 // Set all non object fields. |
| 149 unresolved_class.set_token_pos(reader->Read<int32_t>()); | 149 unresolved_class.set_token_pos(reader->Read<int32_t>()); |
| 150 | 150 |
| 151 // Set all the object fields. | 151 // Set all the object fields. |
| 152 // TODO(5411462): Need to assert No GC can happen here, even though | 152 // TODO(5411462): Need to assert No GC can happen here, even though |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 199 } | 199 } |
| 200 | 200 |
| 201 | 201 |
| 202 RawType* Type::ReadFrom(SnapshotReader* reader, | 202 RawType* Type::ReadFrom(SnapshotReader* reader, |
| 203 intptr_t object_id, | 203 intptr_t object_id, |
| 204 intptr_t tags, | 204 intptr_t tags, |
| 205 Snapshot::Kind kind) { | 205 Snapshot::Kind kind) { |
| 206 ASSERT(reader != NULL); | 206 ASSERT(reader != NULL); |
| 207 | 207 |
| 208 // Allocate type object. | 208 // Allocate type object. |
| 209 Type& type = Type::ZoneHandle(reader->isolate(), NEW_OBJECT(Type)); | 209 Type& type = Type::ZoneHandle(reader->zone(), NEW_OBJECT(Type)); |
| 210 reader->AddBackRef(object_id, &type, kIsDeserialized); | 210 reader->AddBackRef(object_id, &type, kIsDeserialized); |
| 211 | 211 |
| 212 // Set all non object fields. | 212 // Set all non object fields. |
| 213 type.set_token_pos(reader->Read<int32_t>()); | 213 type.set_token_pos(reader->Read<int32_t>()); |
| 214 type.set_type_state(reader->Read<int8_t>()); | 214 type.set_type_state(reader->Read<int8_t>()); |
| 215 | 215 |
| 216 // Set all the object fields. | 216 // Set all the object fields. |
| 217 // TODO(5411462): Need to assert No GC can happen here, even though | 217 // TODO(5411462): Need to assert No GC can happen here, even though |
| 218 // allocations may happen. | 218 // allocations may happen. |
| 219 intptr_t num_flds = (type.raw()->to() - type.raw()->from()); | 219 intptr_t num_flds = (type.raw()->to() - type.raw()->from()); |
| (...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 274 | 274 |
| 275 | 275 |
| 276 RawTypeRef* TypeRef::ReadFrom(SnapshotReader* reader, | 276 RawTypeRef* TypeRef::ReadFrom(SnapshotReader* reader, |
| 277 intptr_t object_id, | 277 intptr_t object_id, |
| 278 intptr_t tags, | 278 intptr_t tags, |
| 279 Snapshot::Kind kind) { | 279 Snapshot::Kind kind) { |
| 280 ASSERT(reader != NULL); | 280 ASSERT(reader != NULL); |
| 281 | 281 |
| 282 // Allocate type ref object. | 282 // Allocate type ref object. |
| 283 TypeRef& type_ref = TypeRef::ZoneHandle( | 283 TypeRef& type_ref = TypeRef::ZoneHandle( |
| 284 reader->isolate(), NEW_OBJECT(TypeRef)); | 284 reader->zone(), NEW_OBJECT(TypeRef)); |
| 285 reader->AddBackRef(object_id, &type_ref, kIsDeserialized); | 285 reader->AddBackRef(object_id, &type_ref, kIsDeserialized); |
| 286 | 286 |
| 287 // Set the object tags. | 287 // Set the object tags. |
| 288 type_ref.set_tags(tags); | 288 type_ref.set_tags(tags); |
| 289 | 289 |
| 290 // Set all the object fields. | 290 // Set all the object fields. |
| 291 // TODO(5411462): Need to assert No GC can happen here, even though | 291 // TODO(5411462): Need to assert No GC can happen here, even though |
| 292 // allocations may happen. | 292 // allocations may happen. |
| 293 intptr_t num_flds = (type_ref.raw()->to() - type_ref.raw()->from()); | 293 intptr_t num_flds = (type_ref.raw()->to() - type_ref.raw()->from()); |
| 294 for (intptr_t i = 0; i <= num_flds; i++) { | 294 for (intptr_t i = 0; i <= num_flds; i++) { |
| (...skipping 25 matching lines...) Expand all Loading... |
| 320 | 320 |
| 321 | 321 |
| 322 RawTypeParameter* TypeParameter::ReadFrom(SnapshotReader* reader, | 322 RawTypeParameter* TypeParameter::ReadFrom(SnapshotReader* reader, |
| 323 intptr_t object_id, | 323 intptr_t object_id, |
| 324 intptr_t tags, | 324 intptr_t tags, |
| 325 Snapshot::Kind kind) { | 325 Snapshot::Kind kind) { |
| 326 ASSERT(reader != NULL); | 326 ASSERT(reader != NULL); |
| 327 | 327 |
| 328 // Allocate type parameter object. | 328 // Allocate type parameter object. |
| 329 TypeParameter& type_parameter = TypeParameter::ZoneHandle( | 329 TypeParameter& type_parameter = TypeParameter::ZoneHandle( |
| 330 reader->isolate(), NEW_OBJECT(TypeParameter)); | 330 reader->zone(), NEW_OBJECT(TypeParameter)); |
| 331 reader->AddBackRef(object_id, &type_parameter, kIsDeserialized); | 331 reader->AddBackRef(object_id, &type_parameter, kIsDeserialized); |
| 332 | 332 |
| 333 // Set the object tags. | 333 // Set the object tags. |
| 334 type_parameter.set_tags(tags); | 334 type_parameter.set_tags(tags); |
| 335 | 335 |
| 336 // Set all non object fields. | 336 // Set all non object fields. |
| 337 type_parameter.set_index(reader->Read<int32_t>()); | 337 type_parameter.set_index(reader->Read<int32_t>()); |
| 338 type_parameter.set_token_pos(reader->Read<int32_t>()); | 338 type_parameter.set_token_pos(reader->Read<int32_t>()); |
| 339 type_parameter.set_type_state(reader->Read<int8_t>()); | 339 type_parameter.set_type_state(reader->Read<int8_t>()); |
| 340 | 340 |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 380 | 380 |
| 381 | 381 |
| 382 RawBoundedType* BoundedType::ReadFrom(SnapshotReader* reader, | 382 RawBoundedType* BoundedType::ReadFrom(SnapshotReader* reader, |
| 383 intptr_t object_id, | 383 intptr_t object_id, |
| 384 intptr_t tags, | 384 intptr_t tags, |
| 385 Snapshot::Kind kind) { | 385 Snapshot::Kind kind) { |
| 386 ASSERT(reader != NULL); | 386 ASSERT(reader != NULL); |
| 387 | 387 |
| 388 // Allocate bounded type object. | 388 // Allocate bounded type object. |
| 389 BoundedType& bounded_type = BoundedType::ZoneHandle( | 389 BoundedType& bounded_type = BoundedType::ZoneHandle( |
| 390 reader->isolate(), NEW_OBJECT(BoundedType)); | 390 reader->zone(), NEW_OBJECT(BoundedType)); |
| 391 reader->AddBackRef(object_id, &bounded_type, kIsDeserialized); | 391 reader->AddBackRef(object_id, &bounded_type, kIsDeserialized); |
| 392 | 392 |
| 393 // Set the object tags. | 393 // Set the object tags. |
| 394 bounded_type.set_tags(tags); | 394 bounded_type.set_tags(tags); |
| 395 | 395 |
| 396 // Set all the object fields. | 396 // Set all the object fields. |
| 397 // TODO(5411462): Need to assert No GC can happen here, even though | 397 // TODO(5411462): Need to assert No GC can happen here, even though |
| 398 // allocations may happen. | 398 // allocations may happen. |
| 399 intptr_t num_flds = (bounded_type.raw()->to() - | 399 intptr_t num_flds = (bounded_type.raw()->to() - |
| 400 bounded_type.raw()->from()); | 400 bounded_type.raw()->from()); |
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 445 RawTypeArguments* TypeArguments::ReadFrom(SnapshotReader* reader, | 445 RawTypeArguments* TypeArguments::ReadFrom(SnapshotReader* reader, |
| 446 intptr_t object_id, | 446 intptr_t object_id, |
| 447 intptr_t tags, | 447 intptr_t tags, |
| 448 Snapshot::Kind kind) { | 448 Snapshot::Kind kind) { |
| 449 ASSERT(reader != NULL); | 449 ASSERT(reader != NULL); |
| 450 | 450 |
| 451 // Read the length so that we can determine instance size to allocate. | 451 // Read the length so that we can determine instance size to allocate. |
| 452 intptr_t len = reader->ReadSmiValue(); | 452 intptr_t len = reader->ReadSmiValue(); |
| 453 | 453 |
| 454 TypeArguments& type_arguments = TypeArguments::ZoneHandle( | 454 TypeArguments& type_arguments = TypeArguments::ZoneHandle( |
| 455 reader->isolate(), NEW_OBJECT_WITH_LEN_SPACE(TypeArguments, len, kind)); | 455 reader->zone(), NEW_OBJECT_WITH_LEN_SPACE(TypeArguments, len, kind)); |
| 456 reader->AddBackRef(object_id, &type_arguments, kIsDeserialized); | 456 reader->AddBackRef(object_id, &type_arguments, kIsDeserialized); |
| 457 | 457 |
| 458 // Set the instantiations field, which is only read from a full snapshot. | 458 // Set the instantiations field, which is only read from a full snapshot. |
| 459 if (kind == Snapshot::kFull) { | 459 if (kind == Snapshot::kFull) { |
| 460 *(reader->ArrayHandle()) ^= reader->ReadObjectImpl(); | 460 *(reader->ArrayHandle()) ^= reader->ReadObjectImpl(); |
| 461 type_arguments.set_instantiations(*(reader->ArrayHandle())); | 461 type_arguments.set_instantiations(*(reader->ArrayHandle())); |
| 462 } else { | 462 } else { |
| 463 type_arguments.set_instantiations(Object::zero_array()); | 463 type_arguments.set_instantiations(Object::zero_array()); |
| 464 } | 464 } |
| 465 | 465 |
| (...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 524 RawPatchClass* PatchClass::ReadFrom(SnapshotReader* reader, | 524 RawPatchClass* PatchClass::ReadFrom(SnapshotReader* reader, |
| 525 intptr_t object_id, | 525 intptr_t object_id, |
| 526 intptr_t tags, | 526 intptr_t tags, |
| 527 Snapshot::Kind kind) { | 527 Snapshot::Kind kind) { |
| 528 ASSERT(reader != NULL); | 528 ASSERT(reader != NULL); |
| 529 ASSERT(((kind == Snapshot::kScript) && | 529 ASSERT(((kind == Snapshot::kScript) && |
| 530 !RawObject::IsCreatedFromSnapshot(tags)) || | 530 !RawObject::IsCreatedFromSnapshot(tags)) || |
| 531 (kind == Snapshot::kFull)); | 531 (kind == Snapshot::kFull)); |
| 532 | 532 |
| 533 // Allocate function object. | 533 // Allocate function object. |
| 534 PatchClass& cls = PatchClass::ZoneHandle(reader->isolate(), | 534 PatchClass& cls = PatchClass::ZoneHandle(reader->zone(), |
| 535 NEW_OBJECT(PatchClass)); | 535 NEW_OBJECT(PatchClass)); |
| 536 reader->AddBackRef(object_id, &cls, kIsDeserialized); | 536 reader->AddBackRef(object_id, &cls, kIsDeserialized); |
| 537 | 537 |
| 538 // Set the object tags. | 538 // Set the object tags. |
| 539 cls.set_tags(tags); | 539 cls.set_tags(tags); |
| 540 | 540 |
| 541 // Set all the object fields. | 541 // Set all the object fields. |
| 542 // TODO(5411462): Need to assert No GC can happen here, even though | 542 // TODO(5411462): Need to assert No GC can happen here, even though |
| 543 // allocations may happen. | 543 // allocations may happen. |
| 544 intptr_t num_flds = (cls.raw()->to() - cls.raw()->from()); | 544 intptr_t num_flds = (cls.raw()->to() - cls.raw()->from()); |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 576 intptr_t object_id, | 576 intptr_t object_id, |
| 577 intptr_t tags, | 577 intptr_t tags, |
| 578 Snapshot::Kind kind) { | 578 Snapshot::Kind kind) { |
| 579 ASSERT(reader != NULL); | 579 ASSERT(reader != NULL); |
| 580 ASSERT(((kind == Snapshot::kScript) && | 580 ASSERT(((kind == Snapshot::kScript) && |
| 581 !RawObject::IsCreatedFromSnapshot(tags)) || | 581 !RawObject::IsCreatedFromSnapshot(tags)) || |
| 582 (kind == Snapshot::kFull)); | 582 (kind == Snapshot::kFull)); |
| 583 | 583 |
| 584 // Allocate closure data object. | 584 // Allocate closure data object. |
| 585 ClosureData& data = ClosureData::ZoneHandle( | 585 ClosureData& data = ClosureData::ZoneHandle( |
| 586 reader->isolate(), NEW_OBJECT(ClosureData)); | 586 reader->zone(), NEW_OBJECT(ClosureData)); |
| 587 reader->AddBackRef(object_id, &data, kIsDeserialized); | 587 reader->AddBackRef(object_id, &data, kIsDeserialized); |
| 588 | 588 |
| 589 // Set the object tags. | 589 // Set the object tags. |
| 590 data.set_tags(tags); | 590 data.set_tags(tags); |
| 591 | 591 |
| 592 // Set all the object fields. | 592 // Set all the object fields. |
| 593 // TODO(5411462): Need to assert No GC can happen here, even though | 593 // TODO(5411462): Need to assert No GC can happen here, even though |
| 594 // allocations may happen. | 594 // allocations may happen. |
| 595 intptr_t num_flds = (data.raw()->to() - data.raw()->from()); | 595 intptr_t num_flds = (data.raw()->to() - data.raw()->from()); |
| 596 for (intptr_t i = 0; i <= num_flds; i++) { | 596 for (intptr_t i = 0; i <= num_flds; i++) { |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 636 intptr_t object_id, | 636 intptr_t object_id, |
| 637 intptr_t tags, | 637 intptr_t tags, |
| 638 Snapshot::Kind kind) { | 638 Snapshot::Kind kind) { |
| 639 ASSERT(reader != NULL); | 639 ASSERT(reader != NULL); |
| 640 ASSERT(((kind == Snapshot::kScript) && | 640 ASSERT(((kind == Snapshot::kScript) && |
| 641 !RawObject::IsCreatedFromSnapshot(tags)) || | 641 !RawObject::IsCreatedFromSnapshot(tags)) || |
| 642 (kind == Snapshot::kFull)); | 642 (kind == Snapshot::kFull)); |
| 643 | 643 |
| 644 // Allocate redirection data object. | 644 // Allocate redirection data object. |
| 645 RedirectionData& data = RedirectionData::ZoneHandle( | 645 RedirectionData& data = RedirectionData::ZoneHandle( |
| 646 reader->isolate(), NEW_OBJECT(RedirectionData)); | 646 reader->zone(), NEW_OBJECT(RedirectionData)); |
| 647 reader->AddBackRef(object_id, &data, kIsDeserialized); | 647 reader->AddBackRef(object_id, &data, kIsDeserialized); |
| 648 | 648 |
| 649 // Set the object tags. | 649 // Set the object tags. |
| 650 data.set_tags(tags); | 650 data.set_tags(tags); |
| 651 | 651 |
| 652 // Set all the object fields. | 652 // Set all the object fields. |
| 653 // TODO(5411462): Need to assert No GC can happen here, even though | 653 // TODO(5411462): Need to assert No GC can happen here, even though |
| 654 // allocations may happen. | 654 // allocations may happen. |
| 655 intptr_t num_flds = (data.raw()->to() - data.raw()->from()); | 655 intptr_t num_flds = (data.raw()->to() - data.raw()->from()); |
| 656 for (intptr_t i = 0; i <= num_flds; i++) { | 656 for (intptr_t i = 0; i <= num_flds; i++) { |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 688 intptr_t object_id, | 688 intptr_t object_id, |
| 689 intptr_t tags, | 689 intptr_t tags, |
| 690 Snapshot::Kind kind) { | 690 Snapshot::Kind kind) { |
| 691 ASSERT(reader != NULL); | 691 ASSERT(reader != NULL); |
| 692 ASSERT(((kind == Snapshot::kScript) && | 692 ASSERT(((kind == Snapshot::kScript) && |
| 693 !RawObject::IsCreatedFromSnapshot(tags)) || | 693 !RawObject::IsCreatedFromSnapshot(tags)) || |
| 694 (kind == Snapshot::kFull)); | 694 (kind == Snapshot::kFull)); |
| 695 | 695 |
| 696 // Allocate function object. | 696 // Allocate function object. |
| 697 Function& func = Function::ZoneHandle( | 697 Function& func = Function::ZoneHandle( |
| 698 reader->isolate(), NEW_OBJECT(Function)); | 698 reader->zone(), NEW_OBJECT(Function)); |
| 699 reader->AddBackRef(object_id, &func, kIsDeserialized); | 699 reader->AddBackRef(object_id, &func, kIsDeserialized); |
| 700 | 700 |
| 701 // Set the object tags. | 701 // Set the object tags. |
| 702 func.set_tags(tags); | 702 func.set_tags(tags); |
| 703 | 703 |
| 704 // Set all the non object fields. | 704 // Set all the non object fields. |
| 705 func.set_token_pos(reader->Read<int32_t>()); | 705 func.set_token_pos(reader->Read<int32_t>()); |
| 706 func.set_end_token_pos(reader->Read<int32_t>()); | 706 func.set_end_token_pos(reader->Read<int32_t>()); |
| 707 func.set_usage_counter(reader->Read<int32_t>()); | 707 func.set_usage_counter(reader->Read<int32_t>()); |
| 708 func.set_num_fixed_parameters(reader->Read<int16_t>()); | 708 func.set_num_fixed_parameters(reader->Read<int16_t>()); |
| (...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 766 RawField* Field::ReadFrom(SnapshotReader* reader, | 766 RawField* Field::ReadFrom(SnapshotReader* reader, |
| 767 intptr_t object_id, | 767 intptr_t object_id, |
| 768 intptr_t tags, | 768 intptr_t tags, |
| 769 Snapshot::Kind kind) { | 769 Snapshot::Kind kind) { |
| 770 ASSERT(reader != NULL); | 770 ASSERT(reader != NULL); |
| 771 ASSERT(((kind == Snapshot::kScript) && | 771 ASSERT(((kind == Snapshot::kScript) && |
| 772 !RawObject::IsCreatedFromSnapshot(tags)) || | 772 !RawObject::IsCreatedFromSnapshot(tags)) || |
| 773 (kind == Snapshot::kFull)); | 773 (kind == Snapshot::kFull)); |
| 774 | 774 |
| 775 // Allocate field object. | 775 // Allocate field object. |
| 776 Field& field = Field::ZoneHandle(reader->isolate(), NEW_OBJECT(Field)); | 776 Field& field = Field::ZoneHandle(reader->zone(), NEW_OBJECT(Field)); |
| 777 reader->AddBackRef(object_id, &field, kIsDeserialized); | 777 reader->AddBackRef(object_id, &field, kIsDeserialized); |
| 778 | 778 |
| 779 // Set the object tags. | 779 // Set the object tags. |
| 780 field.set_tags(tags); | 780 field.set_tags(tags); |
| 781 | 781 |
| 782 // Set all non object fields. | 782 // Set all non object fields. |
| 783 field.set_token_pos(reader->Read<int32_t>()); | 783 field.set_token_pos(reader->Read<int32_t>()); |
| 784 field.set_guarded_cid(reader->Read<int32_t>()); | 784 field.set_guarded_cid(reader->Read<int32_t>()); |
| 785 field.set_is_nullable(reader->Read<int32_t>()); | 785 field.set_is_nullable(reader->Read<int32_t>()); |
| 786 field.set_kind_bits(reader->Read<uint8_t>()); | 786 field.set_kind_bits(reader->Read<uint8_t>()); |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 830 | 830 |
| 831 RawLiteralToken* LiteralToken::ReadFrom(SnapshotReader* reader, | 831 RawLiteralToken* LiteralToken::ReadFrom(SnapshotReader* reader, |
| 832 intptr_t object_id, | 832 intptr_t object_id, |
| 833 intptr_t tags, | 833 intptr_t tags, |
| 834 Snapshot::Kind kind) { | 834 Snapshot::Kind kind) { |
| 835 ASSERT(reader != NULL); | 835 ASSERT(reader != NULL); |
| 836 ASSERT(kind != Snapshot::kMessage); | 836 ASSERT(kind != Snapshot::kMessage); |
| 837 | 837 |
| 838 // Create the literal token object. | 838 // Create the literal token object. |
| 839 LiteralToken& literal_token = LiteralToken::ZoneHandle( | 839 LiteralToken& literal_token = LiteralToken::ZoneHandle( |
| 840 reader->isolate(), NEW_OBJECT(LiteralToken)); | 840 reader->zone(), NEW_OBJECT(LiteralToken)); |
| 841 reader->AddBackRef(object_id, &literal_token, kIsDeserialized); | 841 reader->AddBackRef(object_id, &literal_token, kIsDeserialized); |
| 842 | 842 |
| 843 // Set the object tags. | 843 // Set the object tags. |
| 844 literal_token.set_tags(tags); | 844 literal_token.set_tags(tags); |
| 845 | 845 |
| 846 // Read the token attributes. | 846 // Read the token attributes. |
| 847 Token::Kind token_kind = static_cast<Token::Kind>(reader->Read<int32_t>()); | 847 Token::Kind token_kind = static_cast<Token::Kind>(reader->Read<int32_t>()); |
| 848 literal_token.set_kind(token_kind); | 848 literal_token.set_kind(token_kind); |
| 849 | 849 |
| 850 // Set all the object fields. | 850 // Set all the object fields. |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 890 ASSERT(reader != NULL); | 890 ASSERT(reader != NULL); |
| 891 ASSERT(((kind == Snapshot::kScript) && | 891 ASSERT(((kind == Snapshot::kScript) && |
| 892 !RawObject::IsCreatedFromSnapshot(tags)) || | 892 !RawObject::IsCreatedFromSnapshot(tags)) || |
| 893 (kind == Snapshot::kFull)); | 893 (kind == Snapshot::kFull)); |
| 894 | 894 |
| 895 // Read the length so that we can determine number of tokens to read. | 895 // Read the length so that we can determine number of tokens to read. |
| 896 intptr_t len = reader->ReadSmiValue(); | 896 intptr_t len = reader->ReadSmiValue(); |
| 897 | 897 |
| 898 // Create the token stream object. | 898 // Create the token stream object. |
| 899 TokenStream& token_stream = TokenStream::ZoneHandle( | 899 TokenStream& token_stream = TokenStream::ZoneHandle( |
| 900 reader->isolate(), NEW_OBJECT_WITH_LEN(TokenStream, len)); | 900 reader->zone(), NEW_OBJECT_WITH_LEN(TokenStream, len)); |
| 901 reader->AddBackRef(object_id, &token_stream, kIsDeserialized); | 901 reader->AddBackRef(object_id, &token_stream, kIsDeserialized); |
| 902 | 902 |
| 903 // Set the object tags. | 903 // Set the object tags. |
| 904 token_stream.set_tags(tags); | 904 token_stream.set_tags(tags); |
| 905 | 905 |
| 906 // Read the stream of tokens into the TokenStream object for script | 906 // Read the stream of tokens into the TokenStream object for script |
| 907 // snapshots as we made a copy of token stream. | 907 // snapshots as we made a copy of token stream. |
| 908 if (kind == Snapshot::kScript) { | 908 if (kind == Snapshot::kScript) { |
| 909 NoGCScope no_gc; | 909 NoGCScope no_gc; |
| 910 RawExternalTypedData* stream = token_stream.GetStream(); | 910 RawExternalTypedData* stream = token_stream.GetStream(); |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 953 RawScript* Script::ReadFrom(SnapshotReader* reader, | 953 RawScript* Script::ReadFrom(SnapshotReader* reader, |
| 954 intptr_t object_id, | 954 intptr_t object_id, |
| 955 intptr_t tags, | 955 intptr_t tags, |
| 956 Snapshot::Kind kind) { | 956 Snapshot::Kind kind) { |
| 957 ASSERT(reader != NULL); | 957 ASSERT(reader != NULL); |
| 958 ASSERT(((kind == Snapshot::kScript) && | 958 ASSERT(((kind == Snapshot::kScript) && |
| 959 !RawObject::IsCreatedFromSnapshot(tags)) || | 959 !RawObject::IsCreatedFromSnapshot(tags)) || |
| 960 (kind == Snapshot::kFull)); | 960 (kind == Snapshot::kFull)); |
| 961 | 961 |
| 962 // Allocate script object. | 962 // Allocate script object. |
| 963 Script& script = Script::ZoneHandle(reader->isolate(), NEW_OBJECT(Script)); | 963 Script& script = Script::ZoneHandle(reader->zone(), NEW_OBJECT(Script)); |
| 964 reader->AddBackRef(object_id, &script, kIsDeserialized); | 964 reader->AddBackRef(object_id, &script, kIsDeserialized); |
| 965 | 965 |
| 966 // Set the object tags. | 966 // Set the object tags. |
| 967 script.set_tags(tags); | 967 script.set_tags(tags); |
| 968 | 968 |
| 969 script.StoreNonPointer(&script.raw_ptr()->line_offset_, | 969 script.StoreNonPointer(&script.raw_ptr()->line_offset_, |
| 970 reader->Read<int32_t>()); | 970 reader->Read<int32_t>()); |
| 971 script.StoreNonPointer(&script.raw_ptr()->col_offset_, | 971 script.StoreNonPointer(&script.raw_ptr()->col_offset_, |
| 972 reader->Read<int32_t>()); | 972 reader->Read<int32_t>()); |
| 973 script.StoreNonPointer(&script.raw_ptr()->kind_, | 973 script.StoreNonPointer(&script.raw_ptr()->kind_, |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1017 } | 1017 } |
| 1018 | 1018 |
| 1019 | 1019 |
| 1020 RawLibrary* Library::ReadFrom(SnapshotReader* reader, | 1020 RawLibrary* Library::ReadFrom(SnapshotReader* reader, |
| 1021 intptr_t object_id, | 1021 intptr_t object_id, |
| 1022 intptr_t tags, | 1022 intptr_t tags, |
| 1023 Snapshot::Kind kind) { | 1023 Snapshot::Kind kind) { |
| 1024 ASSERT(reader != NULL); | 1024 ASSERT(reader != NULL); |
| 1025 ASSERT(kind != Snapshot::kMessage); | 1025 ASSERT(kind != Snapshot::kMessage); |
| 1026 | 1026 |
| 1027 Library& library = Library::ZoneHandle(reader->isolate(), Library::null()); | 1027 Library& library = Library::ZoneHandle(reader->zone(), Library::null()); |
| 1028 reader->AddBackRef(object_id, &library, kIsDeserialized); | 1028 reader->AddBackRef(object_id, &library, kIsDeserialized); |
| 1029 | 1029 |
| 1030 if ((kind == Snapshot::kScript) && RawObject::IsCreatedFromSnapshot(tags)) { | 1030 if ((kind == Snapshot::kScript) && RawObject::IsCreatedFromSnapshot(tags)) { |
| 1031 ASSERT(kind != Snapshot::kFull); | 1031 ASSERT(kind != Snapshot::kFull); |
| 1032 // Lookup the object as it should already exist in the heap. | 1032 // Lookup the object as it should already exist in the heap. |
| 1033 *reader->StringHandle() ^= reader->ReadObjectImpl(); | 1033 *reader->StringHandle() ^= reader->ReadObjectImpl(); |
| 1034 library = Library::LookupLibrary(*reader->StringHandle()); | 1034 library = Library::LookupLibrary(*reader->StringHandle()); |
| 1035 } else { | 1035 } else { |
| 1036 // Allocate library object. | 1036 // Allocate library object. |
| 1037 library = NEW_OBJECT(Library); | 1037 library = NEW_OBJECT(Library); |
| (...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1132 intptr_t object_id, | 1132 intptr_t object_id, |
| 1133 intptr_t tags, | 1133 intptr_t tags, |
| 1134 Snapshot::Kind kind) { | 1134 Snapshot::Kind kind) { |
| 1135 ASSERT(reader != NULL); | 1135 ASSERT(reader != NULL); |
| 1136 ASSERT(((kind == Snapshot::kScript) && | 1136 ASSERT(((kind == Snapshot::kScript) && |
| 1137 !RawObject::IsCreatedFromSnapshot(tags)) || | 1137 !RawObject::IsCreatedFromSnapshot(tags)) || |
| 1138 (kind == Snapshot::kFull)); | 1138 (kind == Snapshot::kFull)); |
| 1139 | 1139 |
| 1140 // Allocate library prefix object. | 1140 // Allocate library prefix object. |
| 1141 LibraryPrefix& prefix = LibraryPrefix::ZoneHandle( | 1141 LibraryPrefix& prefix = LibraryPrefix::ZoneHandle( |
| 1142 reader->isolate(), NEW_OBJECT(LibraryPrefix)); | 1142 reader->zone(), NEW_OBJECT(LibraryPrefix)); |
| 1143 reader->AddBackRef(object_id, &prefix, kIsDeserialized); | 1143 reader->AddBackRef(object_id, &prefix, kIsDeserialized); |
| 1144 | 1144 |
| 1145 // Set the object tags. | 1145 // Set the object tags. |
| 1146 prefix.set_tags(tags); | 1146 prefix.set_tags(tags); |
| 1147 | 1147 |
| 1148 // Set all non object fields. | 1148 // Set all non object fields. |
| 1149 prefix.StoreNonPointer(&prefix.raw_ptr()->num_imports_, | 1149 prefix.StoreNonPointer(&prefix.raw_ptr()->num_imports_, |
| 1150 reader->Read<int32_t>()); | 1150 reader->Read<int32_t>()); |
| 1151 prefix.StoreNonPointer(&prefix.raw_ptr()->is_deferred_load_, | 1151 prefix.StoreNonPointer(&prefix.raw_ptr()->is_deferred_load_, |
| 1152 reader->Read<bool>()); | 1152 reader->Read<bool>()); |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1196 intptr_t object_id, | 1196 intptr_t object_id, |
| 1197 intptr_t tags, | 1197 intptr_t tags, |
| 1198 Snapshot::Kind kind) { | 1198 Snapshot::Kind kind) { |
| 1199 ASSERT(reader != NULL); | 1199 ASSERT(reader != NULL); |
| 1200 ASSERT(((kind == Snapshot::kScript) && | 1200 ASSERT(((kind == Snapshot::kScript) && |
| 1201 !RawObject::IsCreatedFromSnapshot(tags)) || | 1201 !RawObject::IsCreatedFromSnapshot(tags)) || |
| 1202 (kind == Snapshot::kFull)); | 1202 (kind == Snapshot::kFull)); |
| 1203 | 1203 |
| 1204 // Allocate Namespace object. | 1204 // Allocate Namespace object. |
| 1205 Namespace& ns = Namespace::ZoneHandle( | 1205 Namespace& ns = Namespace::ZoneHandle( |
| 1206 reader->isolate(), NEW_OBJECT(Namespace)); | 1206 reader->zone(), NEW_OBJECT(Namespace)); |
| 1207 reader->AddBackRef(object_id, &ns, kIsDeserialized); | 1207 reader->AddBackRef(object_id, &ns, kIsDeserialized); |
| 1208 | 1208 |
| 1209 // Set the object tags. | 1209 // Set the object tags. |
| 1210 ns.set_tags(tags); | 1210 ns.set_tags(tags); |
| 1211 | 1211 |
| 1212 // Set all the object fields. | 1212 // Set all the object fields. |
| 1213 // TODO(5411462): Need to assert No GC can happen here, even though | 1213 // TODO(5411462): Need to assert No GC can happen here, even though |
| 1214 // allocations may happen. | 1214 // allocations may happen. |
| 1215 intptr_t num_flds = (ns.raw()->to() - ns.raw()->from()); | 1215 intptr_t num_flds = (ns.raw()->to() - ns.raw()->from()); |
| 1216 for (intptr_t i = 0; i <= num_flds; i++) { | 1216 for (intptr_t i = 0; i <= num_flds; i++) { |
| (...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1359 | 1359 |
| 1360 | 1360 |
| 1361 RawContext* Context::ReadFrom(SnapshotReader* reader, | 1361 RawContext* Context::ReadFrom(SnapshotReader* reader, |
| 1362 intptr_t object_id, | 1362 intptr_t object_id, |
| 1363 intptr_t tags, | 1363 intptr_t tags, |
| 1364 Snapshot::Kind kind) { | 1364 Snapshot::Kind kind) { |
| 1365 ASSERT(reader != NULL); | 1365 ASSERT(reader != NULL); |
| 1366 | 1366 |
| 1367 // Allocate context object. | 1367 // Allocate context object. |
| 1368 int32_t num_vars = reader->Read<int32_t>(); | 1368 int32_t num_vars = reader->Read<int32_t>(); |
| 1369 Context& context = Context::ZoneHandle(reader->isolate()); | 1369 Context& context = Context::ZoneHandle(reader->zone()); |
| 1370 reader->AddBackRef(object_id, &context, kIsDeserialized); | 1370 reader->AddBackRef(object_id, &context, kIsDeserialized); |
| 1371 if (num_vars == 0) { | 1371 if (num_vars == 0) { |
| 1372 context ^= reader->object_store()->empty_context(); | 1372 context ^= reader->object_store()->empty_context(); |
| 1373 } else { | 1373 } else { |
| 1374 context ^= NEW_OBJECT_WITH_LEN(Context, num_vars); | 1374 context ^= NEW_OBJECT_WITH_LEN(Context, num_vars); |
| 1375 | 1375 |
| 1376 // Set the object tags. | 1376 // Set the object tags. |
| 1377 context.set_tags(tags); | 1377 context.set_tags(tags); |
| 1378 | 1378 |
| 1379 // Set all the object fields. | 1379 // Set all the object fields. |
| (...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1494 | 1494 |
| 1495 | 1495 |
| 1496 RawApiError* ApiError::ReadFrom(SnapshotReader* reader, | 1496 RawApiError* ApiError::ReadFrom(SnapshotReader* reader, |
| 1497 intptr_t object_id, | 1497 intptr_t object_id, |
| 1498 intptr_t tags, | 1498 intptr_t tags, |
| 1499 Snapshot::Kind kind) { | 1499 Snapshot::Kind kind) { |
| 1500 ASSERT(reader != NULL); | 1500 ASSERT(reader != NULL); |
| 1501 | 1501 |
| 1502 // Allocate ApiError object. | 1502 // Allocate ApiError object. |
| 1503 ApiError& api_error = | 1503 ApiError& api_error = |
| 1504 ApiError::ZoneHandle(reader->isolate(), NEW_OBJECT(ApiError)); | 1504 ApiError::ZoneHandle(reader->zone(), NEW_OBJECT(ApiError)); |
| 1505 reader->AddBackRef(object_id, &api_error, kIsDeserialized); | 1505 reader->AddBackRef(object_id, &api_error, kIsDeserialized); |
| 1506 | 1506 |
| 1507 // Set the object tags. | 1507 // Set the object tags. |
| 1508 api_error.set_tags(tags); | 1508 api_error.set_tags(tags); |
| 1509 | 1509 |
| 1510 // Set all the object fields. | 1510 // Set all the object fields. |
| 1511 // TODO(5411462): Need to assert No GC can happen here, even though | 1511 // TODO(5411462): Need to assert No GC can happen here, even though |
| 1512 // allocations may happen. | 1512 // allocations may happen. |
| 1513 intptr_t num_flds = (api_error.raw()->to() - api_error.raw()->from()); | 1513 intptr_t num_flds = (api_error.raw()->to() - api_error.raw()->from()); |
| 1514 for (intptr_t i = 0; i <= num_flds; i++) { | 1514 for (intptr_t i = 0; i <= num_flds; i++) { |
| (...skipping 25 matching lines...) Expand all Loading... |
| 1540 | 1540 |
| 1541 | 1541 |
| 1542 RawLanguageError* LanguageError::ReadFrom(SnapshotReader* reader, | 1542 RawLanguageError* LanguageError::ReadFrom(SnapshotReader* reader, |
| 1543 intptr_t object_id, | 1543 intptr_t object_id, |
| 1544 intptr_t tags, | 1544 intptr_t tags, |
| 1545 Snapshot::Kind kind) { | 1545 Snapshot::Kind kind) { |
| 1546 ASSERT(reader != NULL); | 1546 ASSERT(reader != NULL); |
| 1547 | 1547 |
| 1548 // Allocate LanguageError object. | 1548 // Allocate LanguageError object. |
| 1549 LanguageError& language_error = | 1549 LanguageError& language_error = |
| 1550 LanguageError::ZoneHandle(reader->isolate(), NEW_OBJECT(LanguageError)); | 1550 LanguageError::ZoneHandle(reader->zone(), NEW_OBJECT(LanguageError)); |
| 1551 reader->AddBackRef(object_id, &language_error, kIsDeserialized); | 1551 reader->AddBackRef(object_id, &language_error, kIsDeserialized); |
| 1552 | 1552 |
| 1553 // Set the object tags. | 1553 // Set the object tags. |
| 1554 language_error.set_tags(tags); | 1554 language_error.set_tags(tags); |
| 1555 | 1555 |
| 1556 // Set all non object fields. | 1556 // Set all non object fields. |
| 1557 language_error.set_token_pos(reader->Read<int32_t>()); | 1557 language_error.set_token_pos(reader->Read<int32_t>()); |
| 1558 language_error.set_kind(reader->Read<uint8_t>()); | 1558 language_error.set_kind(reader->Read<uint8_t>()); |
| 1559 | 1559 |
| 1560 // Set all the object fields. | 1560 // Set all the object fields. |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1592 SnapshotWriterVisitor visitor(writer); | 1592 SnapshotWriterVisitor visitor(writer); |
| 1593 visitor.VisitPointers(from(), to()); | 1593 visitor.VisitPointers(from(), to()); |
| 1594 } | 1594 } |
| 1595 | 1595 |
| 1596 | 1596 |
| 1597 RawUnhandledException* UnhandledException::ReadFrom(SnapshotReader* reader, | 1597 RawUnhandledException* UnhandledException::ReadFrom(SnapshotReader* reader, |
| 1598 intptr_t object_id, | 1598 intptr_t object_id, |
| 1599 intptr_t tags, | 1599 intptr_t tags, |
| 1600 Snapshot::Kind kind) { | 1600 Snapshot::Kind kind) { |
| 1601 UnhandledException& result = UnhandledException::ZoneHandle( | 1601 UnhandledException& result = UnhandledException::ZoneHandle( |
| 1602 reader->isolate(), NEW_OBJECT(UnhandledException)); | 1602 reader->zone(), NEW_OBJECT(UnhandledException)); |
| 1603 reader->AddBackRef(object_id, &result, kIsDeserialized); | 1603 reader->AddBackRef(object_id, &result, kIsDeserialized); |
| 1604 | 1604 |
| 1605 // Set the object tags. | 1605 // Set the object tags. |
| 1606 result.set_tags(tags); | 1606 result.set_tags(tags); |
| 1607 | 1607 |
| 1608 // Set all the object fields. | 1608 // Set all the object fields. |
| 1609 // TODO(5411462): Need to assert No GC can happen here, even though | 1609 // TODO(5411462): Need to assert No GC can happen here, even though |
| 1610 // allocations may happen. | 1610 // allocations may happen. |
| 1611 intptr_t num_flds = (result.raw()->to() - result.raw()->from()); | 1611 intptr_t num_flds = (result.raw()->to() - result.raw()->from()); |
| 1612 for (intptr_t i = 0; i <= num_flds; i++) { | 1612 for (intptr_t i = 0; i <= num_flds; i++) { |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1651 | 1651 |
| 1652 | 1652 |
| 1653 RawInstance* Instance::ReadFrom(SnapshotReader* reader, | 1653 RawInstance* Instance::ReadFrom(SnapshotReader* reader, |
| 1654 intptr_t object_id, | 1654 intptr_t object_id, |
| 1655 intptr_t tags, | 1655 intptr_t tags, |
| 1656 Snapshot::Kind kind) { | 1656 Snapshot::Kind kind) { |
| 1657 ASSERT(reader != NULL); | 1657 ASSERT(reader != NULL); |
| 1658 | 1658 |
| 1659 // Create an Instance object or get canonical one if it is a canonical | 1659 // Create an Instance object or get canonical one if it is a canonical |
| 1660 // constant. | 1660 // constant. |
| 1661 Instance& obj = Instance::ZoneHandle(reader->isolate(), Instance::null()); | 1661 Instance& obj = Instance::ZoneHandle(reader->zone(), Instance::null()); |
| 1662 if (kind == Snapshot::kFull) { | 1662 if (kind == Snapshot::kFull) { |
| 1663 obj = reader->NewInstance(); | 1663 obj = reader->NewInstance(); |
| 1664 } else { | 1664 } else { |
| 1665 obj ^= Object::Allocate(kInstanceCid, | 1665 obj ^= Object::Allocate(kInstanceCid, |
| 1666 Instance::InstanceSize(), | 1666 Instance::InstanceSize(), |
| 1667 HEAP_SPACE(kind)); | 1667 HEAP_SPACE(kind)); |
| 1668 // When reading a script snapshot we need to canonicalize only those object | 1668 // When reading a script snapshot we need to canonicalize only those object |
| 1669 // references that are objects from the core library (loaded from a | 1669 // references that are objects from the core library (loaded from a |
| 1670 // full snapshot). Objects that are only in the script need not be | 1670 // full snapshot). Objects that are only in the script need not be |
| 1671 // canonicalized as they are already canonical. | 1671 // canonicalized as they are already canonical. |
| (...skipping 30 matching lines...) Expand all Loading... |
| 1702 RawMint* Mint::ReadFrom(SnapshotReader* reader, | 1702 RawMint* Mint::ReadFrom(SnapshotReader* reader, |
| 1703 intptr_t object_id, | 1703 intptr_t object_id, |
| 1704 intptr_t tags, | 1704 intptr_t tags, |
| 1705 Snapshot::Kind kind) { | 1705 Snapshot::Kind kind) { |
| 1706 ASSERT(reader != NULL); | 1706 ASSERT(reader != NULL); |
| 1707 | 1707 |
| 1708 // Read the 64 bit value for the object. | 1708 // Read the 64 bit value for the object. |
| 1709 int64_t value = reader->Read<int64_t>(); | 1709 int64_t value = reader->Read<int64_t>(); |
| 1710 | 1710 |
| 1711 // Create a Mint object or get canonical one if it is a canonical constant. | 1711 // Create a Mint object or get canonical one if it is a canonical constant. |
| 1712 Mint& mint = Mint::ZoneHandle(reader->isolate(), Mint::null()); | 1712 Mint& mint = Mint::ZoneHandle(reader->zone(), Mint::null()); |
| 1713 if (kind == Snapshot::kFull) { | 1713 if (kind == Snapshot::kFull) { |
| 1714 mint = reader->NewMint(value); | 1714 mint = reader->NewMint(value); |
| 1715 } else { | 1715 } else { |
| 1716 // When reading a script snapshot we need to canonicalize only those object | 1716 // When reading a script snapshot we need to canonicalize only those object |
| 1717 // references that are objects from the core library (loaded from a | 1717 // references that are objects from the core library (loaded from a |
| 1718 // full snapshot). Objects that are only in the script need not be | 1718 // full snapshot). Objects that are only in the script need not be |
| 1719 // canonicalized as they are already canonical. | 1719 // canonicalized as they are already canonical. |
| 1720 // When reading a message snapshot we always have to canonicalize. | 1720 // When reading a message snapshot we always have to canonicalize. |
| 1721 if (RawObject::IsCanonical(tags) && | 1721 if (RawObject::IsCanonical(tags) && |
| 1722 (RawObject::IsCreatedFromSnapshot(tags) || | 1722 (RawObject::IsCreatedFromSnapshot(tags) || |
| (...skipping 29 matching lines...) Expand all Loading... |
| 1752 } | 1752 } |
| 1753 | 1753 |
| 1754 | 1754 |
| 1755 RawBigint* Bigint::ReadFrom(SnapshotReader* reader, | 1755 RawBigint* Bigint::ReadFrom(SnapshotReader* reader, |
| 1756 intptr_t object_id, | 1756 intptr_t object_id, |
| 1757 intptr_t tags, | 1757 intptr_t tags, |
| 1758 Snapshot::Kind kind) { | 1758 Snapshot::Kind kind) { |
| 1759 ASSERT(reader != NULL); | 1759 ASSERT(reader != NULL); |
| 1760 | 1760 |
| 1761 // Allocate bigint object. | 1761 // Allocate bigint object. |
| 1762 Bigint& obj = Bigint::ZoneHandle(reader->isolate(), NEW_OBJECT(Bigint)); | 1762 Bigint& obj = Bigint::ZoneHandle(reader->zone(), NEW_OBJECT(Bigint)); |
| 1763 reader->AddBackRef(object_id, &obj, kIsDeserialized); | 1763 reader->AddBackRef(object_id, &obj, kIsDeserialized); |
| 1764 | 1764 |
| 1765 // Set all the object fields. | 1765 // Set all the object fields. |
| 1766 // TODO(5411462): Need to assert No GC can happen here, even though | 1766 // TODO(5411462): Need to assert No GC can happen here, even though |
| 1767 // allocations may happen. | 1767 // allocations may happen. |
| 1768 intptr_t num_flds = (obj.raw()->to() - obj.raw()->from()); | 1768 intptr_t num_flds = (obj.raw()->to() - obj.raw()->from()); |
| 1769 for (intptr_t i = 0; i <= num_flds; i++) { | 1769 for (intptr_t i = 0; i <= num_flds; i++) { |
| 1770 (*reader->PassiveObjectHandle()) = reader->ReadObjectImpl(); | 1770 (*reader->PassiveObjectHandle()) = reader->ReadObjectImpl(); |
| 1771 obj.StorePointer(obj.raw()->from() + i, | 1771 obj.StorePointer(obj.raw()->from() + i, |
| 1772 reader->PassiveObjectHandle()->raw()); | 1772 reader->PassiveObjectHandle()->raw()); |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1815 RawDouble* Double::ReadFrom(SnapshotReader* reader, | 1815 RawDouble* Double::ReadFrom(SnapshotReader* reader, |
| 1816 intptr_t object_id, | 1816 intptr_t object_id, |
| 1817 intptr_t tags, | 1817 intptr_t tags, |
| 1818 Snapshot::Kind kind) { | 1818 Snapshot::Kind kind) { |
| 1819 ASSERT(reader != NULL); | 1819 ASSERT(reader != NULL); |
| 1820 ASSERT(kind != Snapshot::kMessage); | 1820 ASSERT(kind != Snapshot::kMessage); |
| 1821 // Read the double value for the object. | 1821 // Read the double value for the object. |
| 1822 double value = reader->ReadDouble(); | 1822 double value = reader->ReadDouble(); |
| 1823 | 1823 |
| 1824 // Create a Double object or get canonical one if it is a canonical constant. | 1824 // Create a Double object or get canonical one if it is a canonical constant. |
| 1825 Double& dbl = Double::ZoneHandle(reader->isolate(), Double::null()); | 1825 Double& dbl = Double::ZoneHandle(reader->zone(), Double::null()); |
| 1826 if (kind == Snapshot::kFull) { | 1826 if (kind == Snapshot::kFull) { |
| 1827 dbl = reader->NewDouble(value); | 1827 dbl = reader->NewDouble(value); |
| 1828 } else { | 1828 } else { |
| 1829 // When reading a script snapshot we need to canonicalize only those object | 1829 // When reading a script snapshot we need to canonicalize only those object |
| 1830 // references that are objects from the core library (loaded from a | 1830 // references that are objects from the core library (loaded from a |
| 1831 // full snapshot). Objects that are only in the script need not be | 1831 // full snapshot). Objects that are only in the script need not be |
| 1832 // canonicalized as they are already canonical. | 1832 // canonicalized as they are already canonical. |
| 1833 if (RawObject::IsCanonical(tags) && | 1833 if (RawObject::IsCanonical(tags) && |
| 1834 RawObject::IsCreatedFromSnapshot(tags)) { | 1834 RawObject::IsCreatedFromSnapshot(tags)) { |
| 1835 dbl = Double::NewCanonical(value); | 1835 dbl = Double::NewCanonical(value); |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1882 template<typename StringType, typename CharacterType, typename CallbackType> | 1882 template<typename StringType, typename CharacterType, typename CallbackType> |
| 1883 void String::ReadFromImpl(SnapshotReader* reader, | 1883 void String::ReadFromImpl(SnapshotReader* reader, |
| 1884 String* str_obj, | 1884 String* str_obj, |
| 1885 intptr_t len, | 1885 intptr_t len, |
| 1886 intptr_t tags, | 1886 intptr_t tags, |
| 1887 CallbackType new_symbol, | 1887 CallbackType new_symbol, |
| 1888 Snapshot::Kind kind) { | 1888 Snapshot::Kind kind) { |
| 1889 ASSERT(reader != NULL); | 1889 ASSERT(reader != NULL); |
| 1890 if (RawObject::IsCanonical(tags)) { | 1890 if (RawObject::IsCanonical(tags)) { |
| 1891 // Set up canonical string object. | 1891 // Set up canonical string object. |
| 1892 Isolate* isolate = reader->isolate(); | |
| 1893 ASSERT(reader != NULL); | 1892 ASSERT(reader != NULL); |
| 1894 CharacterType* ptr = | 1893 CharacterType* ptr = reader->zone()->Alloc<CharacterType>(len); |
| 1895 isolate->current_zone()->Alloc<CharacterType>(len); | |
| 1896 for (intptr_t i = 0; i < len; i++) { | 1894 for (intptr_t i = 0; i < len; i++) { |
| 1897 ptr[i] = reader->Read<CharacterType>(); | 1895 ptr[i] = reader->Read<CharacterType>(); |
| 1898 } | 1896 } |
| 1899 *str_obj ^= (*new_symbol)(ptr, len); | 1897 *str_obj ^= (*new_symbol)(ptr, len); |
| 1900 } else { | 1898 } else { |
| 1901 // Set up the string object. | 1899 // Set up the string object. |
| 1902 *str_obj = StringType::New(len, HEAP_SPACE(kind)); | 1900 *str_obj = StringType::New(len, HEAP_SPACE(kind)); |
| 1903 str_obj->set_tags(tags); | 1901 str_obj->set_tags(tags); |
| 1904 str_obj->SetHash(0); // Will get computed when needed. | 1902 str_obj->SetHash(0); // Will get computed when needed. |
| 1905 if (len == 0) { | 1903 if (len == 0) { |
| (...skipping 10 matching lines...) Expand all Loading... |
| 1916 | 1914 |
| 1917 | 1915 |
| 1918 RawOneByteString* OneByteString::ReadFrom(SnapshotReader* reader, | 1916 RawOneByteString* OneByteString::ReadFrom(SnapshotReader* reader, |
| 1919 intptr_t object_id, | 1917 intptr_t object_id, |
| 1920 intptr_t tags, | 1918 intptr_t tags, |
| 1921 Snapshot::Kind kind) { | 1919 Snapshot::Kind kind) { |
| 1922 // Read the length so that we can determine instance size to allocate. | 1920 // Read the length so that we can determine instance size to allocate. |
| 1923 ASSERT(reader != NULL); | 1921 ASSERT(reader != NULL); |
| 1924 intptr_t len = reader->ReadSmiValue(); | 1922 intptr_t len = reader->ReadSmiValue(); |
| 1925 intptr_t hash = reader->ReadSmiValue(); | 1923 intptr_t hash = reader->ReadSmiValue(); |
| 1926 String& str_obj = String::Handle(reader->isolate(), String::null()); | 1924 String& str_obj = String::Handle(reader->zone(), String::null()); |
| 1927 | 1925 |
| 1928 if (kind == Snapshot::kFull) { | 1926 if (kind == Snapshot::kFull) { |
| 1929 ASSERT(reader->isolate()->no_gc_scope_depth() != 0); | 1927 ASSERT(reader->isolate()->no_gc_scope_depth() != 0); |
| 1930 RawOneByteString* obj = reader->NewOneByteString(len); | 1928 RawOneByteString* obj = reader->NewOneByteString(len); |
| 1931 str_obj = obj; | 1929 str_obj = obj; |
| 1932 str_obj.set_tags(tags); | 1930 str_obj.set_tags(tags); |
| 1933 str_obj.SetHash(hash); | 1931 str_obj.SetHash(hash); |
| 1934 if (len > 0) { | 1932 if (len > 0) { |
| 1935 uint8_t* raw_ptr = CharAddr(str_obj, 0); | 1933 uint8_t* raw_ptr = CharAddr(str_obj, 0); |
| 1936 reader->ReadBytes(raw_ptr, len); | 1934 reader->ReadBytes(raw_ptr, len); |
| 1937 } | 1935 } |
| 1938 ASSERT((hash == 0) || (String::Hash(str_obj, 0, str_obj.Length()) == hash)); | 1936 ASSERT((hash == 0) || (String::Hash(str_obj, 0, str_obj.Length()) == hash)); |
| 1939 } else { | 1937 } else { |
| 1940 String::ReadFromImpl<OneByteString, uint8_t>( | 1938 String::ReadFromImpl<OneByteString, uint8_t>( |
| 1941 reader, &str_obj, len, tags, Symbols::FromLatin1, kind); | 1939 reader, &str_obj, len, tags, Symbols::FromLatin1, kind); |
| 1942 } | 1940 } |
| 1943 reader->AddBackRef(object_id, &str_obj, kIsDeserialized); | 1941 reader->AddBackRef(object_id, &str_obj, kIsDeserialized); |
| 1944 return raw(str_obj); | 1942 return raw(str_obj); |
| 1945 } | 1943 } |
| 1946 | 1944 |
| 1947 | 1945 |
| 1948 RawTwoByteString* TwoByteString::ReadFrom(SnapshotReader* reader, | 1946 RawTwoByteString* TwoByteString::ReadFrom(SnapshotReader* reader, |
| 1949 intptr_t object_id, | 1947 intptr_t object_id, |
| 1950 intptr_t tags, | 1948 intptr_t tags, |
| 1951 Snapshot::Kind kind) { | 1949 Snapshot::Kind kind) { |
| 1952 // Read the length so that we can determine instance size to allocate. | 1950 // Read the length so that we can determine instance size to allocate. |
| 1953 ASSERT(reader != NULL); | 1951 ASSERT(reader != NULL); |
| 1954 intptr_t len = reader->ReadSmiValue(); | 1952 intptr_t len = reader->ReadSmiValue(); |
| 1955 intptr_t hash = reader->ReadSmiValue(); | 1953 intptr_t hash = reader->ReadSmiValue(); |
| 1956 String& str_obj = String::Handle(reader->isolate(), String::null()); | 1954 String& str_obj = String::Handle(reader->zone(), String::null()); |
| 1957 | 1955 |
| 1958 if (kind == Snapshot::kFull) { | 1956 if (kind == Snapshot::kFull) { |
| 1959 RawTwoByteString* obj = reader->NewTwoByteString(len); | 1957 RawTwoByteString* obj = reader->NewTwoByteString(len); |
| 1960 str_obj = obj; | 1958 str_obj = obj; |
| 1961 str_obj.set_tags(tags); | 1959 str_obj.set_tags(tags); |
| 1962 str_obj.SetHash(hash); | 1960 str_obj.SetHash(hash); |
| 1963 NoGCScope no_gc; | 1961 NoGCScope no_gc; |
| 1964 uint16_t* raw_ptr = (len > 0)? CharAddr(str_obj, 0) : NULL; | 1962 uint16_t* raw_ptr = (len > 0)? CharAddr(str_obj, 0) : NULL; |
| 1965 for (intptr_t i = 0; i < len; i++) { | 1963 for (intptr_t i = 0; i < len; i++) { |
| 1966 ASSERT(CharAddr(str_obj, i) == raw_ptr); // Will trigger assertions. | 1964 ASSERT(CharAddr(str_obj, i) == raw_ptr); // Will trigger assertions. |
| (...skipping 146 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2113 intptr_t object_id, | 2111 intptr_t object_id, |
| 2114 intptr_t tags, | 2112 intptr_t tags, |
| 2115 Snapshot::Kind kind) { | 2113 Snapshot::Kind kind) { |
| 2116 ASSERT(reader != NULL); | 2114 ASSERT(reader != NULL); |
| 2117 | 2115 |
| 2118 // Read the length so that we can determine instance size to allocate. | 2116 // Read the length so that we can determine instance size to allocate. |
| 2119 intptr_t len = reader->ReadSmiValue(); | 2117 intptr_t len = reader->ReadSmiValue(); |
| 2120 Array* array = reinterpret_cast<Array*>( | 2118 Array* array = reinterpret_cast<Array*>( |
| 2121 reader->GetBackRef(object_id)); | 2119 reader->GetBackRef(object_id)); |
| 2122 if (array == NULL) { | 2120 if (array == NULL) { |
| 2123 array = &(Array::ZoneHandle(reader->isolate(), | 2121 array = &(Array::ZoneHandle(reader->zone(), |
| 2124 NEW_OBJECT_WITH_LEN_SPACE(Array, len, kind))); | 2122 NEW_OBJECT_WITH_LEN_SPACE(Array, len, kind))); |
| 2125 reader->AddBackRef(object_id, array, kIsDeserialized); | 2123 reader->AddBackRef(object_id, array, kIsDeserialized); |
| 2126 } | 2124 } |
| 2127 ASSERT(!RawObject::IsCanonical(tags)); | 2125 ASSERT(!RawObject::IsCanonical(tags)); |
| 2128 reader->ArrayReadFrom(*array, len, tags); | 2126 reader->ArrayReadFrom(*array, len, tags); |
| 2129 return array->raw(); | 2127 return array->raw(); |
| 2130 } | 2128 } |
| 2131 | 2129 |
| 2132 | 2130 |
| 2133 RawImmutableArray* ImmutableArray::ReadFrom(SnapshotReader* reader, | 2131 RawImmutableArray* ImmutableArray::ReadFrom(SnapshotReader* reader, |
| 2134 intptr_t object_id, | 2132 intptr_t object_id, |
| 2135 intptr_t tags, | 2133 intptr_t tags, |
| 2136 Snapshot::Kind kind) { | 2134 Snapshot::Kind kind) { |
| 2137 ASSERT(reader != NULL); | 2135 ASSERT(reader != NULL); |
| 2138 | 2136 |
| 2139 // Read the length so that we can determine instance size to allocate. | 2137 // Read the length so that we can determine instance size to allocate. |
| 2140 intptr_t len = reader->ReadSmiValue(); | 2138 intptr_t len = reader->ReadSmiValue(); |
| 2141 Array* array = reinterpret_cast<Array*>(reader->GetBackRef(object_id)); | 2139 Array* array = reinterpret_cast<Array*>(reader->GetBackRef(object_id)); |
| 2142 if (array == NULL) { | 2140 if (array == NULL) { |
| 2143 array = &(Array::ZoneHandle( | 2141 array = &(Array::ZoneHandle( |
| 2144 reader->isolate(), | 2142 reader->zone(), |
| 2145 NEW_OBJECT_WITH_LEN_SPACE(ImmutableArray, len, kind))); | 2143 NEW_OBJECT_WITH_LEN_SPACE(ImmutableArray, len, kind))); |
| 2146 reader->AddBackRef(object_id, array, kIsDeserialized); | 2144 reader->AddBackRef(object_id, array, kIsDeserialized); |
| 2147 } | 2145 } |
| 2148 reader->ArrayReadFrom(*array, len, tags); | 2146 reader->ArrayReadFrom(*array, len, tags); |
| 2149 if (RawObject::IsCanonical(tags)) { | 2147 if (RawObject::IsCanonical(tags)) { |
| 2150 *array ^= array->CheckAndCanonicalize(NULL); | 2148 *array ^= array->CheckAndCanonicalize(NULL); |
| 2151 } | 2149 } |
| 2152 return raw(*array); | 2150 return raw(*array); |
| 2153 } | 2151 } |
| 2154 | 2152 |
| (...skipping 24 matching lines...) Expand all Loading... |
| 2179 | 2177 |
| 2180 | 2178 |
| 2181 RawGrowableObjectArray* GrowableObjectArray::ReadFrom(SnapshotReader* reader, | 2179 RawGrowableObjectArray* GrowableObjectArray::ReadFrom(SnapshotReader* reader, |
| 2182 intptr_t object_id, | 2180 intptr_t object_id, |
| 2183 intptr_t tags, | 2181 intptr_t tags, |
| 2184 Snapshot::Kind kind) { | 2182 Snapshot::Kind kind) { |
| 2185 ASSERT(reader != NULL); | 2183 ASSERT(reader != NULL); |
| 2186 | 2184 |
| 2187 // Read the length so that we can determine instance size to allocate. | 2185 // Read the length so that we can determine instance size to allocate. |
| 2188 GrowableObjectArray& array = GrowableObjectArray::ZoneHandle( | 2186 GrowableObjectArray& array = GrowableObjectArray::ZoneHandle( |
| 2189 reader->isolate(), GrowableObjectArray::null()); | 2187 reader->zone(), GrowableObjectArray::null()); |
| 2190 if (kind == Snapshot::kFull) { | 2188 if (kind == Snapshot::kFull) { |
| 2191 array = reader->NewGrowableObjectArray(); | 2189 array = reader->NewGrowableObjectArray(); |
| 2192 } else { | 2190 } else { |
| 2193 array = GrowableObjectArray::New(0, HEAP_SPACE(kind)); | 2191 array = GrowableObjectArray::New(0, HEAP_SPACE(kind)); |
| 2194 } | 2192 } |
| 2195 reader->AddBackRef(object_id, &array, kIsDeserialized); | 2193 reader->AddBackRef(object_id, &array, kIsDeserialized); |
| 2196 intptr_t length = reader->ReadSmiValue(); | 2194 intptr_t length = reader->ReadSmiValue(); |
| 2197 array.SetLength(length); | 2195 array.SetLength(length); |
| 2198 *(reader->ArrayHandle()) ^= reader->ReadObjectImpl(); | 2196 *(reader->ArrayHandle()) ^= reader->ReadObjectImpl(); |
| 2199 array.SetData(*(reader->ArrayHandle())); | 2197 array.SetData(*(reader->ArrayHandle())); |
| (...skipping 23 matching lines...) Expand all Loading... |
| 2223 } | 2221 } |
| 2224 | 2222 |
| 2225 | 2223 |
| 2226 RawLinkedHashMap* LinkedHashMap::ReadFrom(SnapshotReader* reader, | 2224 RawLinkedHashMap* LinkedHashMap::ReadFrom(SnapshotReader* reader, |
| 2227 intptr_t object_id, | 2225 intptr_t object_id, |
| 2228 intptr_t tags, | 2226 intptr_t tags, |
| 2229 Snapshot::Kind kind) { | 2227 Snapshot::Kind kind) { |
| 2230 ASSERT(reader != NULL); | 2228 ASSERT(reader != NULL); |
| 2231 | 2229 |
| 2232 LinkedHashMap& map = LinkedHashMap::ZoneHandle( | 2230 LinkedHashMap& map = LinkedHashMap::ZoneHandle( |
| 2233 reader->isolate(), LinkedHashMap::null()); | 2231 reader->zone(), LinkedHashMap::null()); |
| 2234 if (kind == Snapshot::kFull || kind == Snapshot::kScript) { | 2232 if (kind == Snapshot::kFull || kind == Snapshot::kScript) { |
| 2235 // The immutable maps that seed map literals are not yet VM-internal, so | 2233 // The immutable maps that seed map literals are not yet VM-internal, so |
| 2236 // we don't reach this. | 2234 // we don't reach this. |
| 2237 UNREACHABLE(); | 2235 UNREACHABLE(); |
| 2238 } else { | 2236 } else { |
| 2239 map = LinkedHashMap::New(HEAP_SPACE(kind)); | 2237 map = LinkedHashMap::New(HEAP_SPACE(kind)); |
| 2240 } | 2238 } |
| 2241 reader->AddBackRef(object_id, &map, kIsDeserialized); | 2239 reader->AddBackRef(object_id, &map, kIsDeserialized); |
| 2242 *(reader->ArrayHandle()) ^= reader->ReadObjectImpl(); | 2240 *(reader->ArrayHandle()) ^= reader->ReadObjectImpl(); |
| 2243 map.SetData(*(reader->ArrayHandle())); | 2241 map.SetData(*(reader->ArrayHandle())); |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2276 intptr_t tags, | 2274 intptr_t tags, |
| 2277 Snapshot::Kind kind) { | 2275 Snapshot::Kind kind) { |
| 2278 ASSERT(reader != NULL); | 2276 ASSERT(reader != NULL); |
| 2279 // Read the values. | 2277 // Read the values. |
| 2280 float value0 = reader->Read<float>(); | 2278 float value0 = reader->Read<float>(); |
| 2281 float value1 = reader->Read<float>(); | 2279 float value1 = reader->Read<float>(); |
| 2282 float value2 = reader->Read<float>(); | 2280 float value2 = reader->Read<float>(); |
| 2283 float value3 = reader->Read<float>(); | 2281 float value3 = reader->Read<float>(); |
| 2284 | 2282 |
| 2285 // Create a Float32x4 object. | 2283 // Create a Float32x4 object. |
| 2286 Float32x4& simd = Float32x4::ZoneHandle(reader->isolate(), | 2284 Float32x4& simd = Float32x4::ZoneHandle(reader->zone(), |
| 2287 Float32x4::null()); | 2285 Float32x4::null()); |
| 2288 if (kind == Snapshot::kFull) { | 2286 if (kind == Snapshot::kFull) { |
| 2289 simd = reader->NewFloat32x4(value0, value1, value2, value3); | 2287 simd = reader->NewFloat32x4(value0, value1, value2, value3); |
| 2290 } else { | 2288 } else { |
| 2291 simd = Float32x4::New(value0, value1, value2, value3, HEAP_SPACE(kind)); | 2289 simd = Float32x4::New(value0, value1, value2, value3, HEAP_SPACE(kind)); |
| 2292 } | 2290 } |
| 2293 reader->AddBackRef(object_id, &simd, kIsDeserialized); | 2291 reader->AddBackRef(object_id, &simd, kIsDeserialized); |
| 2294 // Set the object tags. | 2292 // Set the object tags. |
| 2295 simd.set_tags(tags); | 2293 simd.set_tags(tags); |
| 2296 return simd.raw(); | 2294 return simd.raw(); |
| (...skipping 25 matching lines...) Expand all Loading... |
| 2322 intptr_t tags, | 2320 intptr_t tags, |
| 2323 Snapshot::Kind kind) { | 2321 Snapshot::Kind kind) { |
| 2324 ASSERT(reader != NULL); | 2322 ASSERT(reader != NULL); |
| 2325 // Read the values. | 2323 // Read the values. |
| 2326 uint32_t value0 = reader->Read<uint32_t>(); | 2324 uint32_t value0 = reader->Read<uint32_t>(); |
| 2327 uint32_t value1 = reader->Read<uint32_t>(); | 2325 uint32_t value1 = reader->Read<uint32_t>(); |
| 2328 uint32_t value2 = reader->Read<uint32_t>(); | 2326 uint32_t value2 = reader->Read<uint32_t>(); |
| 2329 uint32_t value3 = reader->Read<uint32_t>(); | 2327 uint32_t value3 = reader->Read<uint32_t>(); |
| 2330 | 2328 |
| 2331 // Create a Float32x4 object. | 2329 // Create a Float32x4 object. |
| 2332 Int32x4& simd = Int32x4::ZoneHandle(reader->isolate(), Int32x4::null()); | 2330 Int32x4& simd = Int32x4::ZoneHandle(reader->zone(), Int32x4::null()); |
| 2333 | 2331 |
| 2334 if (kind == Snapshot::kFull) { | 2332 if (kind == Snapshot::kFull) { |
| 2335 simd = reader->NewInt32x4(value0, value1, value2, value3); | 2333 simd = reader->NewInt32x4(value0, value1, value2, value3); |
| 2336 } else { | 2334 } else { |
| 2337 simd = Int32x4::New(value0, value1, value2, value3, HEAP_SPACE(kind)); | 2335 simd = Int32x4::New(value0, value1, value2, value3, HEAP_SPACE(kind)); |
| 2338 } | 2336 } |
| 2339 reader->AddBackRef(object_id, &simd, kIsDeserialized); | 2337 reader->AddBackRef(object_id, &simd, kIsDeserialized); |
| 2340 // Set the object tags. | 2338 // Set the object tags. |
| 2341 simd.set_tags(tags); | 2339 simd.set_tags(tags); |
| 2342 return simd.raw(); | 2340 return simd.raw(); |
| (...skipping 23 matching lines...) Expand all Loading... |
| 2366 RawFloat64x2* Float64x2::ReadFrom(SnapshotReader* reader, | 2364 RawFloat64x2* Float64x2::ReadFrom(SnapshotReader* reader, |
| 2367 intptr_t object_id, | 2365 intptr_t object_id, |
| 2368 intptr_t tags, | 2366 intptr_t tags, |
| 2369 Snapshot::Kind kind) { | 2367 Snapshot::Kind kind) { |
| 2370 ASSERT(reader != NULL); | 2368 ASSERT(reader != NULL); |
| 2371 // Read the values. | 2369 // Read the values. |
| 2372 double value0 = reader->Read<double>(); | 2370 double value0 = reader->Read<double>(); |
| 2373 double value1 = reader->Read<double>(); | 2371 double value1 = reader->Read<double>(); |
| 2374 | 2372 |
| 2375 // Create a Float64x2 object. | 2373 // Create a Float64x2 object. |
| 2376 Float64x2& simd = Float64x2::ZoneHandle(reader->isolate(), | 2374 Float64x2& simd = Float64x2::ZoneHandle(reader->zone(), |
| 2377 Float64x2::null()); | 2375 Float64x2::null()); |
| 2378 if (kind == Snapshot::kFull) { | 2376 if (kind == Snapshot::kFull) { |
| 2379 simd = reader->NewFloat64x2(value0, value1); | 2377 simd = reader->NewFloat64x2(value0, value1); |
| 2380 } else { | 2378 } else { |
| 2381 simd = Float64x2::New(value0, value1, HEAP_SPACE(kind)); | 2379 simd = Float64x2::New(value0, value1, HEAP_SPACE(kind)); |
| 2382 } | 2380 } |
| 2383 reader->AddBackRef(object_id, &simd, kIsDeserialized); | 2381 reader->AddBackRef(object_id, &simd, kIsDeserialized); |
| 2384 // Set the object tags. | 2382 // Set the object tags. |
| 2385 simd.set_tags(tags); | 2383 simd.set_tags(tags); |
| 2386 return simd.raw(); | 2384 return simd.raw(); |
| (...skipping 25 matching lines...) Expand all Loading... |
| 2412 | 2410 |
| 2413 | 2411 |
| 2414 RawTypedData* TypedData::ReadFrom(SnapshotReader* reader, | 2412 RawTypedData* TypedData::ReadFrom(SnapshotReader* reader, |
| 2415 intptr_t object_id, | 2413 intptr_t object_id, |
| 2416 intptr_t tags, | 2414 intptr_t tags, |
| 2417 Snapshot::Kind kind) { | 2415 Snapshot::Kind kind) { |
| 2418 ASSERT(reader != NULL); | 2416 ASSERT(reader != NULL); |
| 2419 | 2417 |
| 2420 intptr_t cid = RawObject::ClassIdTag::decode(tags); | 2418 intptr_t cid = RawObject::ClassIdTag::decode(tags); |
| 2421 intptr_t len = reader->ReadSmiValue(); | 2419 intptr_t len = reader->ReadSmiValue(); |
| 2422 TypedData& result = TypedData::ZoneHandle(reader->isolate(), | 2420 TypedData& result = TypedData::ZoneHandle(reader->zone(), |
| 2423 (kind == Snapshot::kFull) ? reader->NewTypedData(cid, len) | 2421 (kind == Snapshot::kFull) ? reader->NewTypedData(cid, len) |
| 2424 : TypedData::New(cid, len, HEAP_SPACE(kind))); | 2422 : TypedData::New(cid, len, HEAP_SPACE(kind))); |
| 2425 reader->AddBackRef(object_id, &result, kIsDeserialized); | 2423 reader->AddBackRef(object_id, &result, kIsDeserialized); |
| 2426 | 2424 |
| 2427 // Set the object tags. | 2425 // Set the object tags. |
| 2428 result.set_tags(tags); | 2426 result.set_tags(tags); |
| 2429 | 2427 |
| 2430 // Setup the array elements. | 2428 // Setup the array elements. |
| 2431 intptr_t element_size = ElementSizeInBytes(cid); | 2429 intptr_t element_size = ElementSizeInBytes(cid); |
| 2432 intptr_t length_in_bytes = len * element_size; | 2430 intptr_t length_in_bytes = len * element_size; |
| (...skipping 191 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2624 #undef TYPED_DATA_WRITE | 2622 #undef TYPED_DATA_WRITE |
| 2625 #undef EXT_TYPED_DATA_WRITE | 2623 #undef EXT_TYPED_DATA_WRITE |
| 2626 | 2624 |
| 2627 | 2625 |
| 2628 RawCapability* Capability::ReadFrom(SnapshotReader* reader, | 2626 RawCapability* Capability::ReadFrom(SnapshotReader* reader, |
| 2629 intptr_t object_id, | 2627 intptr_t object_id, |
| 2630 intptr_t tags, | 2628 intptr_t tags, |
| 2631 Snapshot::Kind kind) { | 2629 Snapshot::Kind kind) { |
| 2632 uint64_t id = reader->Read<uint64_t>(); | 2630 uint64_t id = reader->Read<uint64_t>(); |
| 2633 | 2631 |
| 2634 Capability& result = Capability::ZoneHandle(reader->isolate(), | 2632 Capability& result = Capability::ZoneHandle(reader->zone(), |
| 2635 Capability::New(id)); | 2633 Capability::New(id)); |
| 2636 reader->AddBackRef(object_id, &result, kIsDeserialized); | 2634 reader->AddBackRef(object_id, &result, kIsDeserialized); |
| 2637 return result.raw(); | 2635 return result.raw(); |
| 2638 } | 2636 } |
| 2639 | 2637 |
| 2640 | 2638 |
| 2641 void RawCapability::WriteTo(SnapshotWriter* writer, | 2639 void RawCapability::WriteTo(SnapshotWriter* writer, |
| 2642 intptr_t object_id, | 2640 intptr_t object_id, |
| 2643 Snapshot::Kind kind) { | 2641 Snapshot::Kind kind) { |
| 2644 // Write out the serialization header value for this object. | 2642 // Write out the serialization header value for this object. |
| (...skipping 30 matching lines...) Expand all Loading... |
| 2675 } | 2673 } |
| 2676 | 2674 |
| 2677 | 2675 |
| 2678 RawSendPort* SendPort::ReadFrom(SnapshotReader* reader, | 2676 RawSendPort* SendPort::ReadFrom(SnapshotReader* reader, |
| 2679 intptr_t object_id, | 2677 intptr_t object_id, |
| 2680 intptr_t tags, | 2678 intptr_t tags, |
| 2681 Snapshot::Kind kind) { | 2679 Snapshot::Kind kind) { |
| 2682 uint64_t id = reader->Read<uint64_t>(); | 2680 uint64_t id = reader->Read<uint64_t>(); |
| 2683 uint64_t origin_id = reader->Read<uint64_t>(); | 2681 uint64_t origin_id = reader->Read<uint64_t>(); |
| 2684 | 2682 |
| 2685 SendPort& result = SendPort::ZoneHandle(reader->isolate(), | 2683 SendPort& result = SendPort::ZoneHandle(reader->zone(), |
| 2686 SendPort::New(id, origin_id)); | 2684 SendPort::New(id, origin_id)); |
| 2687 reader->AddBackRef(object_id, &result, kIsDeserialized); | 2685 reader->AddBackRef(object_id, &result, kIsDeserialized); |
| 2688 return result.raw(); | 2686 return result.raw(); |
| 2689 } | 2687 } |
| 2690 | 2688 |
| 2691 | 2689 |
| 2692 void RawSendPort::WriteTo(SnapshotWriter* writer, | 2690 void RawSendPort::WriteTo(SnapshotWriter* writer, |
| 2693 intptr_t object_id, | 2691 intptr_t object_id, |
| 2694 Snapshot::Kind kind) { | 2692 Snapshot::Kind kind) { |
| 2695 // Write out the serialization header value for this object. | 2693 // Write out the serialization header value for this object. |
| 2696 writer->WriteInlinedObjectHeader(object_id); | 2694 writer->WriteInlinedObjectHeader(object_id); |
| 2697 | 2695 |
| 2698 // Write out the class and tags information. | 2696 // Write out the class and tags information. |
| 2699 writer->WriteIndexedObject(kSendPortCid); | 2697 writer->WriteIndexedObject(kSendPortCid); |
| 2700 writer->WriteTags(writer->GetObjectTags(this)); | 2698 writer->WriteTags(writer->GetObjectTags(this)); |
| 2701 | 2699 |
| 2702 writer->Write<uint64_t>(ptr()->id_); | 2700 writer->Write<uint64_t>(ptr()->id_); |
| 2703 writer->Write<uint64_t>(ptr()->origin_id_); | 2701 writer->Write<uint64_t>(ptr()->origin_id_); |
| 2704 } | 2702 } |
| 2705 | 2703 |
| 2706 | 2704 |
| 2707 RawStacktrace* Stacktrace::ReadFrom(SnapshotReader* reader, | 2705 RawStacktrace* Stacktrace::ReadFrom(SnapshotReader* reader, |
| 2708 intptr_t object_id, | 2706 intptr_t object_id, |
| 2709 intptr_t tags, | 2707 intptr_t tags, |
| 2710 Snapshot::Kind kind) { | 2708 Snapshot::Kind kind) { |
| 2711 if (kind == Snapshot::kFull) { | 2709 if (kind == Snapshot::kFull) { |
| 2712 Stacktrace& result = Stacktrace::ZoneHandle(reader->isolate(), | 2710 Stacktrace& result = Stacktrace::ZoneHandle(reader->zone(), |
| 2713 reader->NewStacktrace()); | 2711 reader->NewStacktrace()); |
| 2714 reader->AddBackRef(object_id, &result, kIsDeserialized); | 2712 reader->AddBackRef(object_id, &result, kIsDeserialized); |
| 2715 | 2713 |
| 2716 // Set all the object fields. | 2714 // Set all the object fields. |
| 2717 // TODO(5411462): Need to assert No GC can happen here, even though | 2715 // TODO(5411462): Need to assert No GC can happen here, even though |
| 2718 // allocations may happen. | 2716 // allocations may happen. |
| 2719 intptr_t num_flds = (result.raw()->to() - result.raw()->from()); | 2717 intptr_t num_flds = (result.raw()->to() - result.raw()->from()); |
| 2720 for (intptr_t i = 0; i <= num_flds; i++) { | 2718 for (intptr_t i = 0; i <= num_flds; i++) { |
| 2721 (*reader->PassiveObjectHandle()) = reader->ReadObjectRef(); | 2719 (*reader->PassiveObjectHandle()) = reader->ReadObjectRef(); |
| 2722 result.StorePointer((result.raw()->from() + i), | 2720 result.StorePointer((result.raw()->from() + i), |
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2767 intptr_t tags, | 2765 intptr_t tags, |
| 2768 Snapshot::Kind kind) { | 2766 Snapshot::Kind kind) { |
| 2769 ASSERT(reader != NULL); | 2767 ASSERT(reader != NULL); |
| 2770 ASSERT(kind == Snapshot::kMessage); | 2768 ASSERT(kind == Snapshot::kMessage); |
| 2771 | 2769 |
| 2772 // Read the length so that we can determine instance size to allocate. | 2770 // Read the length so that we can determine instance size to allocate. |
| 2773 intptr_t len = reader->ReadSmiValue(); | 2771 intptr_t len = reader->ReadSmiValue(); |
| 2774 | 2772 |
| 2775 // Allocate JSRegExp object. | 2773 // Allocate JSRegExp object. |
| 2776 JSRegExp& regex = JSRegExp::ZoneHandle( | 2774 JSRegExp& regex = JSRegExp::ZoneHandle( |
| 2777 reader->isolate(), JSRegExp::New(len, HEAP_SPACE(kind))); | 2775 reader->zone(), JSRegExp::New(len, HEAP_SPACE(kind))); |
| 2778 reader->AddBackRef(object_id, ®ex, kIsDeserialized); | 2776 reader->AddBackRef(object_id, ®ex, kIsDeserialized); |
| 2779 | 2777 |
| 2780 // Set the object tags. | 2778 // Set the object tags. |
| 2781 regex.set_tags(tags); | 2779 regex.set_tags(tags); |
| 2782 | 2780 |
| 2783 // Read and Set all the other fields. | 2781 // Read and Set all the other fields. |
| 2784 regex.StoreSmi(®ex.raw_ptr()->num_bracket_expressions_, | 2782 regex.StoreSmi(®ex.raw_ptr()->num_bracket_expressions_, |
| 2785 reader->ReadAsSmi()); | 2783 reader->ReadAsSmi()); |
| 2786 *reader->StringHandle() ^= reader->ReadObjectImpl(); | 2784 *reader->StringHandle() ^= reader->ReadObjectImpl(); |
| 2787 regex.set_pattern(*reader->StringHandle()); | 2785 regex.set_pattern(*reader->StringHandle()); |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2820 | 2818 |
| 2821 | 2819 |
| 2822 RawWeakProperty* WeakProperty::ReadFrom(SnapshotReader* reader, | 2820 RawWeakProperty* WeakProperty::ReadFrom(SnapshotReader* reader, |
| 2823 intptr_t object_id, | 2821 intptr_t object_id, |
| 2824 intptr_t tags, | 2822 intptr_t tags, |
| 2825 Snapshot::Kind kind) { | 2823 Snapshot::Kind kind) { |
| 2826 ASSERT(reader != NULL); | 2824 ASSERT(reader != NULL); |
| 2827 | 2825 |
| 2828 // Allocate the weak property object. | 2826 // Allocate the weak property object. |
| 2829 WeakProperty& weak_property = WeakProperty::ZoneHandle( | 2827 WeakProperty& weak_property = WeakProperty::ZoneHandle( |
| 2830 reader->isolate(), WeakProperty::New(HEAP_SPACE(kind))); | 2828 reader->zone(), WeakProperty::New(HEAP_SPACE(kind))); |
| 2831 reader->AddBackRef(object_id, &weak_property, kIsDeserialized); | 2829 reader->AddBackRef(object_id, &weak_property, kIsDeserialized); |
| 2832 | 2830 |
| 2833 // Set the object tags. | 2831 // Set the object tags. |
| 2834 weak_property.set_tags(tags); | 2832 weak_property.set_tags(tags); |
| 2835 | 2833 |
| 2836 // Set all the object fields. | 2834 // Set all the object fields. |
| 2837 // TODO(5411462): Need to assert No GC can happen here, even though | 2835 // TODO(5411462): Need to assert No GC can happen here, even though |
| 2838 // allocations may happen. | 2836 // allocations may happen. |
| 2839 intptr_t num_flds = (weak_property.raw()->to() - | 2837 intptr_t num_flds = (weak_property.raw()->to() - |
| 2840 weak_property.raw()->from()); | 2838 weak_property.raw()->from()); |
| (...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2905 // We do not allow objects with native fields in an isolate message. | 2903 // We do not allow objects with native fields in an isolate message. |
| 2906 writer->SetWriteException(Exceptions::kArgument, | 2904 writer->SetWriteException(Exceptions::kArgument, |
| 2907 "Illegal argument in isolate message" | 2905 "Illegal argument in isolate message" |
| 2908 " : (object is a UserTag)"); | 2906 " : (object is a UserTag)"); |
| 2909 } else { | 2907 } else { |
| 2910 UNREACHABLE(); | 2908 UNREACHABLE(); |
| 2911 } | 2909 } |
| 2912 } | 2910 } |
| 2913 | 2911 |
| 2914 } // namespace dart | 2912 } // namespace dart |
| OLD | NEW |