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/bigint_operations.h" | 5 #include "vm/bigint_operations.h" |
6 #include "vm/object.h" | 6 #include "vm/object.h" |
7 #include "vm/object_store.h" | 7 #include "vm/object_store.h" |
8 #include "vm/snapshot.h" | 8 #include "vm/snapshot.h" |
9 #include "vm/stub_code.h" | 9 #include "vm/stub_code.h" |
10 #include "vm/symbols.h" | 10 #include "vm/symbols.h" |
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
90 ASSERT(writer != NULL); | 90 ASSERT(writer != NULL); |
91 | 91 |
92 // Write out the serialization header value for this object. | 92 // Write out the serialization header value for this object. |
93 writer->WriteInlinedObjectHeader(object_id); | 93 writer->WriteInlinedObjectHeader(object_id); |
94 | 94 |
95 if ((kind == Snapshot::kFull) || | 95 if ((kind == Snapshot::kFull) || |
96 (kind == Snapshot::kScript && | 96 (kind == Snapshot::kScript && |
97 !RawObject::IsCreatedFromSnapshot(writer->GetObjectTags(this)))) { | 97 !RawObject::IsCreatedFromSnapshot(writer->GetObjectTags(this)))) { |
98 // Write out the class and tags information. | 98 // Write out the class and tags information. |
99 writer->WriteVMIsolateObject(kClassCid); | 99 writer->WriteVMIsolateObject(kClassCid); |
100 writer->WriteIntptrValue(writer->GetObjectTags(this)); | 100 writer->WriteTags(writer->GetObjectTags(this)); |
101 | 101 |
102 // Write out all the non object pointer fields. | 102 // Write out all the non object pointer fields. |
103 // NOTE: cpp_vtable_ is not written. | 103 // NOTE: cpp_vtable_ is not written. |
104 int32_t class_id = ptr()->id_; | 104 int32_t class_id = ptr()->id_; |
105 writer->Write<int32_t>(class_id); | 105 writer->Write<int32_t>(class_id); |
106 if (!RawObject::IsInternalVMdefinedClassId(class_id)) { | 106 if (!RawObject::IsInternalVMdefinedClassId(class_id)) { |
107 // We don't write the instance size of VM defined classes as they | 107 // We don't write the instance size of VM defined classes as they |
108 // are already setup during initialization as part of pre populating | 108 // are already setup during initialization as part of pre populating |
109 // the class table. | 109 // the class table. |
110 writer->Write<int32_t>(ptr()->instance_size_in_words_); | 110 writer->Write<int32_t>(ptr()->instance_size_in_words_); |
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
160 void RawUnresolvedClass::WriteTo(SnapshotWriter* writer, | 160 void RawUnresolvedClass::WriteTo(SnapshotWriter* writer, |
161 intptr_t object_id, | 161 intptr_t object_id, |
162 Snapshot::Kind kind) { | 162 Snapshot::Kind kind) { |
163 ASSERT(writer != NULL); | 163 ASSERT(writer != NULL); |
164 | 164 |
165 // Write out the serialization header value for this object. | 165 // Write out the serialization header value for this object. |
166 writer->WriteInlinedObjectHeader(object_id); | 166 writer->WriteInlinedObjectHeader(object_id); |
167 | 167 |
168 // Write out the class and tags information. | 168 // Write out the class and tags information. |
169 writer->WriteVMIsolateObject(kUnresolvedClassCid); | 169 writer->WriteVMIsolateObject(kUnresolvedClassCid); |
170 writer->WriteIntptrValue(writer->GetObjectTags(this)); | 170 writer->WriteTags(writer->GetObjectTags(this)); |
171 | 171 |
172 // Write out all the non object pointer fields. | 172 // Write out all the non object pointer fields. |
173 writer->Write<int32_t>(ptr()->token_pos_); | 173 writer->Write<int32_t>(ptr()->token_pos_); |
174 | 174 |
175 // Write out all the object pointer fields. | 175 // Write out all the object pointer fields. |
176 SnapshotWriterVisitor visitor(writer); | 176 SnapshotWriterVisitor visitor(writer); |
177 visitor.VisitPointers(from(), to()); | 177 visitor.VisitPointers(from(), to()); |
178 } | 178 } |
179 | 179 |
180 | 180 |
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
246 | 246 |
247 // Only resolved and finalized types should be written to a snapshot. | 247 // Only resolved and finalized types should be written to a snapshot. |
248 ASSERT((ptr()->type_state_ == RawType::kFinalizedInstantiated) || | 248 ASSERT((ptr()->type_state_ == RawType::kFinalizedInstantiated) || |
249 (ptr()->type_state_ == RawType::kFinalizedUninstantiated)); | 249 (ptr()->type_state_ == RawType::kFinalizedUninstantiated)); |
250 | 250 |
251 // Write out the serialization header value for this object. | 251 // Write out the serialization header value for this object. |
252 writer->WriteInlinedObjectHeader(object_id); | 252 writer->WriteInlinedObjectHeader(object_id); |
253 | 253 |
254 // Write out the class and tags information. | 254 // Write out the class and tags information. |
255 writer->WriteIndexedObject(kTypeCid); | 255 writer->WriteIndexedObject(kTypeCid); |
256 writer->WriteIntptrValue(writer->GetObjectTags(this)); | 256 writer->WriteTags(writer->GetObjectTags(this)); |
257 | 257 |
258 // Write out all the non object pointer fields. | 258 // Write out all the non object pointer fields. |
259 writer->Write<int32_t>(ptr()->token_pos_); | 259 writer->Write<int32_t>(ptr()->token_pos_); |
260 writer->Write<int8_t>(ptr()->type_state_); | 260 writer->Write<int8_t>(ptr()->type_state_); |
261 | 261 |
262 // Write out all the object pointer fields. Since we will be canonicalizing | 262 // Write out all the object pointer fields. Since we will be canonicalizing |
263 // the type object when reading it back we should write out all the fields | 263 // the type object when reading it back we should write out all the fields |
264 // inline and not as references. | 264 // inline and not as references. |
265 SnapshotWriterVisitor visitor(writer, false); | 265 SnapshotWriterVisitor visitor(writer, false); |
266 visitor.VisitPointers(from(), to()); | 266 visitor.VisitPointers(from(), to()); |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
298 void RawTypeRef::WriteTo(SnapshotWriter* writer, | 298 void RawTypeRef::WriteTo(SnapshotWriter* writer, |
299 intptr_t object_id, | 299 intptr_t object_id, |
300 Snapshot::Kind kind) { | 300 Snapshot::Kind kind) { |
301 ASSERT(writer != NULL); | 301 ASSERT(writer != NULL); |
302 | 302 |
303 // Write out the serialization header value for this object. | 303 // Write out the serialization header value for this object. |
304 writer->WriteInlinedObjectHeader(object_id); | 304 writer->WriteInlinedObjectHeader(object_id); |
305 | 305 |
306 // Write out the class and tags information. | 306 // Write out the class and tags information. |
307 writer->WriteIndexedObject(kTypeRefCid); | 307 writer->WriteIndexedObject(kTypeRefCid); |
308 writer->WriteIntptrValue(writer->GetObjectTags(this)); | 308 writer->WriteTags(writer->GetObjectTags(this)); |
309 | 309 |
310 // Write out all the object pointer fields. | 310 // Write out all the object pointer fields. |
311 SnapshotWriterVisitor visitor(writer); | 311 SnapshotWriterVisitor visitor(writer); |
312 visitor.VisitPointers(from(), to()); | 312 visitor.VisitPointers(from(), to()); |
313 } | 313 } |
314 | 314 |
315 | 315 |
316 RawTypeParameter* TypeParameter::ReadFrom(SnapshotReader* reader, | 316 RawTypeParameter* TypeParameter::ReadFrom(SnapshotReader* reader, |
317 intptr_t object_id, | 317 intptr_t object_id, |
318 intptr_t tags, | 318 intptr_t tags, |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
353 ASSERT(writer != NULL); | 353 ASSERT(writer != NULL); |
354 | 354 |
355 // Only finalized type parameters should be written to a snapshot. | 355 // Only finalized type parameters should be written to a snapshot. |
356 ASSERT(ptr()->type_state_ == RawTypeParameter::kFinalizedUninstantiated); | 356 ASSERT(ptr()->type_state_ == RawTypeParameter::kFinalizedUninstantiated); |
357 | 357 |
358 // Write out the serialization header value for this object. | 358 // Write out the serialization header value for this object. |
359 writer->WriteInlinedObjectHeader(object_id); | 359 writer->WriteInlinedObjectHeader(object_id); |
360 | 360 |
361 // Write out the class and tags information. | 361 // Write out the class and tags information. |
362 writer->WriteIndexedObject(kTypeParameterCid); | 362 writer->WriteIndexedObject(kTypeParameterCid); |
363 writer->WriteIntptrValue(writer->GetObjectTags(this)); | 363 writer->WriteTags(writer->GetObjectTags(this)); |
364 | 364 |
365 // Write out all the non object pointer fields. | 365 // Write out all the non object pointer fields. |
366 writer->Write<int32_t>(ptr()->index_); | 366 writer->Write<int32_t>(ptr()->index_); |
367 writer->Write<int32_t>(ptr()->token_pos_); | 367 writer->Write<int32_t>(ptr()->token_pos_); |
368 writer->Write<int8_t>(ptr()->type_state_); | 368 writer->Write<int8_t>(ptr()->type_state_); |
369 | 369 |
370 // Write out all the object pointer fields. | 370 // Write out all the object pointer fields. |
371 SnapshotWriterVisitor visitor(writer); | 371 SnapshotWriterVisitor visitor(writer); |
372 visitor.VisitPointers(from(), to()); | 372 visitor.VisitPointers(from(), to()); |
373 } | 373 } |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
405 void RawBoundedType::WriteTo(SnapshotWriter* writer, | 405 void RawBoundedType::WriteTo(SnapshotWriter* writer, |
406 intptr_t object_id, | 406 intptr_t object_id, |
407 Snapshot::Kind kind) { | 407 Snapshot::Kind kind) { |
408 ASSERT(writer != NULL); | 408 ASSERT(writer != NULL); |
409 | 409 |
410 // Write out the serialization header value for this object. | 410 // Write out the serialization header value for this object. |
411 writer->WriteInlinedObjectHeader(object_id); | 411 writer->WriteInlinedObjectHeader(object_id); |
412 | 412 |
413 // Write out the class and tags information. | 413 // Write out the class and tags information. |
414 writer->WriteIndexedObject(kBoundedTypeCid); | 414 writer->WriteIndexedObject(kBoundedTypeCid); |
415 writer->WriteIntptrValue(writer->GetObjectTags(this)); | 415 writer->WriteTags(writer->GetObjectTags(this)); |
416 | 416 |
417 // Write out all the object pointer fields. | 417 // Write out all the object pointer fields. |
418 SnapshotWriterVisitor visitor(writer); | 418 SnapshotWriterVisitor visitor(writer); |
419 visitor.VisitPointers(from(), to()); | 419 visitor.VisitPointers(from(), to()); |
420 } | 420 } |
421 | 421 |
422 | 422 |
423 RawMixinAppType* MixinAppType::ReadFrom(SnapshotReader* reader, | 423 RawMixinAppType* MixinAppType::ReadFrom(SnapshotReader* reader, |
424 intptr_t object_id, | 424 intptr_t object_id, |
425 intptr_t tags, | 425 intptr_t tags, |
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
490 void RawTypeArguments::WriteTo(SnapshotWriter* writer, | 490 void RawTypeArguments::WriteTo(SnapshotWriter* writer, |
491 intptr_t object_id, | 491 intptr_t object_id, |
492 Snapshot::Kind kind) { | 492 Snapshot::Kind kind) { |
493 ASSERT(writer != NULL); | 493 ASSERT(writer != NULL); |
494 | 494 |
495 // Write out the serialization header value for this object. | 495 // Write out the serialization header value for this object. |
496 writer->WriteInlinedObjectHeader(object_id); | 496 writer->WriteInlinedObjectHeader(object_id); |
497 | 497 |
498 // Write out the class and tags information. | 498 // Write out the class and tags information. |
499 writer->WriteVMIsolateObject(kTypeArgumentsCid); | 499 writer->WriteVMIsolateObject(kTypeArgumentsCid); |
500 writer->WriteIntptrValue(writer->GetObjectTags(this)); | 500 writer->WriteTags(writer->GetObjectTags(this)); |
501 | 501 |
502 // Write out the length field. | 502 // Write out the length field. |
503 writer->Write<RawObject*>(ptr()->length_); | 503 writer->Write<RawObject*>(ptr()->length_); |
504 | 504 |
505 // Write out the instantiations field, but only in a full snapshot. | 505 // Write out the instantiations field, but only in a full snapshot. |
506 if (kind == Snapshot::kFull) { | 506 if (kind == Snapshot::kFull) { |
507 writer->WriteObjectImpl(ptr()->instantiations_); | 507 writer->WriteObjectImpl(ptr()->instantiations_); |
508 } | 508 } |
509 | 509 |
510 // Write out the individual types. | 510 // Write out the individual types. |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
550 ASSERT(writer != NULL); | 550 ASSERT(writer != NULL); |
551 ASSERT(((kind == Snapshot::kScript) && | 551 ASSERT(((kind == Snapshot::kScript) && |
552 !RawObject::IsCreatedFromSnapshot(writer->GetObjectTags(this))) || | 552 !RawObject::IsCreatedFromSnapshot(writer->GetObjectTags(this))) || |
553 (kind == Snapshot::kFull)); | 553 (kind == Snapshot::kFull)); |
554 | 554 |
555 // Write out the serialization header value for this object. | 555 // Write out the serialization header value for this object. |
556 writer->WriteInlinedObjectHeader(object_id); | 556 writer->WriteInlinedObjectHeader(object_id); |
557 | 557 |
558 // Write out the class and tags information. | 558 // Write out the class and tags information. |
559 writer->WriteVMIsolateObject(kPatchClassCid); | 559 writer->WriteVMIsolateObject(kPatchClassCid); |
560 writer->WriteIntptrValue(writer->GetObjectTags(this)); | 560 writer->WriteTags(writer->GetObjectTags(this)); |
561 // Write out all the object pointer fields. | 561 // Write out all the object pointer fields. |
562 SnapshotWriterVisitor visitor(writer); | 562 SnapshotWriterVisitor visitor(writer); |
563 visitor.VisitPointers(from(), to()); | 563 visitor.VisitPointers(from(), to()); |
564 } | 564 } |
565 | 565 |
566 | 566 |
567 RawClosureData* ClosureData::ReadFrom(SnapshotReader* reader, | 567 RawClosureData* ClosureData::ReadFrom(SnapshotReader* reader, |
568 intptr_t object_id, | 568 intptr_t object_id, |
569 intptr_t tags, | 569 intptr_t tags, |
570 Snapshot::Kind kind) { | 570 Snapshot::Kind kind) { |
(...skipping 28 matching lines...) Expand all Loading... |
599 ASSERT(writer != NULL); | 599 ASSERT(writer != NULL); |
600 ASSERT(((kind == Snapshot::kScript) && | 600 ASSERT(((kind == Snapshot::kScript) && |
601 !RawObject::IsCreatedFromSnapshot(writer->GetObjectTags(this))) || | 601 !RawObject::IsCreatedFromSnapshot(writer->GetObjectTags(this))) || |
602 (kind == Snapshot::kFull)); | 602 (kind == Snapshot::kFull)); |
603 | 603 |
604 // Write out the serialization header value for this object. | 604 // Write out the serialization header value for this object. |
605 writer->WriteInlinedObjectHeader(object_id); | 605 writer->WriteInlinedObjectHeader(object_id); |
606 | 606 |
607 // Write out the class and tags information. | 607 // Write out the class and tags information. |
608 writer->WriteVMIsolateObject(kClosureDataCid); | 608 writer->WriteVMIsolateObject(kClosureDataCid); |
609 writer->WriteIntptrValue(writer->GetObjectTags(this)); | 609 writer->WriteTags(writer->GetObjectTags(this)); |
610 | 610 |
611 // Context scope. | 611 // Context scope. |
612 // We don't write the context scope in the snapshot. | 612 // We don't write the context scope in the snapshot. |
613 writer->WriteObjectImpl(Object::null()); | 613 writer->WriteObjectImpl(Object::null()); |
614 | 614 |
615 // Parent function. | 615 // Parent function. |
616 writer->WriteObjectImpl(ptr()->parent_function_); | 616 writer->WriteObjectImpl(ptr()->parent_function_); |
617 | 617 |
618 // Signature class. | 618 // Signature class. |
619 writer->WriteObjectImpl(ptr()->signature_class_); | 619 writer->WriteObjectImpl(ptr()->signature_class_); |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
659 ASSERT(writer != NULL); | 659 ASSERT(writer != NULL); |
660 ASSERT(((kind == Snapshot::kScript) && | 660 ASSERT(((kind == Snapshot::kScript) && |
661 !RawObject::IsCreatedFromSnapshot(writer->GetObjectTags(this))) || | 661 !RawObject::IsCreatedFromSnapshot(writer->GetObjectTags(this))) || |
662 (kind == Snapshot::kFull)); | 662 (kind == Snapshot::kFull)); |
663 | 663 |
664 // Write out the serialization header value for this object. | 664 // Write out the serialization header value for this object. |
665 writer->WriteInlinedObjectHeader(object_id); | 665 writer->WriteInlinedObjectHeader(object_id); |
666 | 666 |
667 // Write out the class and tags information. | 667 // Write out the class and tags information. |
668 writer->WriteVMIsolateObject(kRedirectionDataCid); | 668 writer->WriteVMIsolateObject(kRedirectionDataCid); |
669 writer->WriteIntptrValue(writer->GetObjectTags(this)); | 669 writer->WriteTags(writer->GetObjectTags(this)); |
670 | 670 |
671 // Write out all the object pointer fields. | 671 // Write out all the object pointer fields. |
672 SnapshotWriterVisitor visitor(writer); | 672 SnapshotWriterVisitor visitor(writer); |
673 visitor.VisitPointers(from(), to()); | 673 visitor.VisitPointers(from(), to()); |
674 } | 674 } |
675 | 675 |
676 | 676 |
677 RawFunction* Function::ReadFrom(SnapshotReader* reader, | 677 RawFunction* Function::ReadFrom(SnapshotReader* reader, |
678 intptr_t object_id, | 678 intptr_t object_id, |
679 intptr_t tags, | 679 intptr_t tags, |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
723 ASSERT(writer != NULL); | 723 ASSERT(writer != NULL); |
724 ASSERT(((kind == Snapshot::kScript) && | 724 ASSERT(((kind == Snapshot::kScript) && |
725 !RawObject::IsCreatedFromSnapshot(writer->GetObjectTags(this))) || | 725 !RawObject::IsCreatedFromSnapshot(writer->GetObjectTags(this))) || |
726 (kind == Snapshot::kFull)); | 726 (kind == Snapshot::kFull)); |
727 | 727 |
728 // Write out the serialization header value for this object. | 728 // Write out the serialization header value for this object. |
729 writer->WriteInlinedObjectHeader(object_id); | 729 writer->WriteInlinedObjectHeader(object_id); |
730 | 730 |
731 // Write out the class and tags information. | 731 // Write out the class and tags information. |
732 writer->WriteVMIsolateObject(kFunctionCid); | 732 writer->WriteVMIsolateObject(kFunctionCid); |
733 writer->WriteIntptrValue(writer->GetObjectTags(this)); | 733 writer->WriteTags(writer->GetObjectTags(this)); |
734 | 734 |
735 // Write out all the non object fields. | 735 // Write out all the non object fields. |
736 writer->Write<int32_t>(ptr()->token_pos_); | 736 writer->Write<int32_t>(ptr()->token_pos_); |
737 writer->Write<int32_t>(ptr()->end_token_pos_); | 737 writer->Write<int32_t>(ptr()->end_token_pos_); |
738 writer->Write<int32_t>(ptr()->usage_counter_); | 738 writer->Write<int32_t>(ptr()->usage_counter_); |
739 writer->Write<int16_t>(ptr()->num_fixed_parameters_); | 739 writer->Write<int16_t>(ptr()->num_fixed_parameters_); |
740 writer->Write<int16_t>(ptr()->num_optional_parameters_); | 740 writer->Write<int16_t>(ptr()->num_optional_parameters_); |
741 writer->Write<int16_t>(ptr()->deoptimization_counter_); | 741 writer->Write<int16_t>(ptr()->deoptimization_counter_); |
742 writer->Write<uint16_t>(ptr()->kind_tag_); | 742 writer->Write<uint16_t>(ptr()->kind_tag_); |
743 writer->Write<uint16_t>(ptr()->optimized_instruction_count_); | 743 writer->Write<uint16_t>(ptr()->optimized_instruction_count_); |
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
791 ASSERT(writer != NULL); | 791 ASSERT(writer != NULL); |
792 ASSERT(((kind == Snapshot::kScript) && | 792 ASSERT(((kind == Snapshot::kScript) && |
793 !RawObject::IsCreatedFromSnapshot(writer->GetObjectTags(this))) || | 793 !RawObject::IsCreatedFromSnapshot(writer->GetObjectTags(this))) || |
794 (kind == Snapshot::kFull)); | 794 (kind == Snapshot::kFull)); |
795 | 795 |
796 // Write out the serialization header value for this object. | 796 // Write out the serialization header value for this object. |
797 writer->WriteInlinedObjectHeader(object_id); | 797 writer->WriteInlinedObjectHeader(object_id); |
798 | 798 |
799 // Write out the class and tags information. | 799 // Write out the class and tags information. |
800 writer->WriteVMIsolateObject(kFieldCid); | 800 writer->WriteVMIsolateObject(kFieldCid); |
801 writer->WriteIntptrValue(writer->GetObjectTags(this)); | 801 writer->WriteTags(writer->GetObjectTags(this)); |
802 | 802 |
803 // Write out all the non object fields. | 803 // Write out all the non object fields. |
804 writer->Write<int32_t>(ptr()->token_pos_); | 804 writer->Write<int32_t>(ptr()->token_pos_); |
805 writer->Write<int32_t>(ptr()->guarded_cid_); | 805 writer->Write<int32_t>(ptr()->guarded_cid_); |
806 writer->Write<int32_t>(ptr()->is_nullable_); | 806 writer->Write<int32_t>(ptr()->is_nullable_); |
807 writer->Write<uint8_t>(ptr()->kind_bits_); | 807 writer->Write<uint8_t>(ptr()->kind_bits_); |
808 | 808 |
809 // Write out all the object pointer fields. | 809 // Write out all the object pointer fields. |
810 SnapshotWriterVisitor visitor(writer); | 810 SnapshotWriterVisitor visitor(writer); |
811 visitor.VisitPointers(from(), to()); | 811 visitor.VisitPointers(from(), to()); |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
843 intptr_t object_id, | 843 intptr_t object_id, |
844 Snapshot::Kind kind) { | 844 Snapshot::Kind kind) { |
845 ASSERT(writer != NULL); | 845 ASSERT(writer != NULL); |
846 ASSERT(kind != Snapshot::kMessage); | 846 ASSERT(kind != Snapshot::kMessage); |
847 | 847 |
848 // Write out the serialization header value for this object. | 848 // Write out the serialization header value for this object. |
849 writer->WriteInlinedObjectHeader(object_id); | 849 writer->WriteInlinedObjectHeader(object_id); |
850 | 850 |
851 // Write out the class and tags information. | 851 // Write out the class and tags information. |
852 writer->WriteVMIsolateObject(kLiteralTokenCid); | 852 writer->WriteVMIsolateObject(kLiteralTokenCid); |
853 writer->WriteIntptrValue(writer->GetObjectTags(this)); | 853 writer->WriteTags(writer->GetObjectTags(this)); |
854 | 854 |
855 // Write out the kind field. | 855 // Write out the kind field. |
856 writer->Write<intptr_t>(ptr()->kind_); | 856 writer->Write<intptr_t>(ptr()->kind_); |
857 | 857 |
858 // Write out literal and value fields. | 858 // Write out literal and value fields. |
859 writer->WriteObjectImpl(ptr()->literal_); | 859 writer->WriteObjectImpl(ptr()->literal_); |
860 writer->WriteObjectImpl(ptr()->value_); | 860 writer->WriteObjectImpl(ptr()->value_); |
861 } | 861 } |
862 | 862 |
863 | 863 |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
906 ASSERT(writer != NULL); | 906 ASSERT(writer != NULL); |
907 ASSERT(((kind == Snapshot::kScript) && | 907 ASSERT(((kind == Snapshot::kScript) && |
908 !RawObject::IsCreatedFromSnapshot(writer->GetObjectTags(this))) || | 908 !RawObject::IsCreatedFromSnapshot(writer->GetObjectTags(this))) || |
909 (kind == Snapshot::kFull)); | 909 (kind == Snapshot::kFull)); |
910 | 910 |
911 // Write out the serialization header value for this object. | 911 // Write out the serialization header value for this object. |
912 writer->WriteInlinedObjectHeader(object_id); | 912 writer->WriteInlinedObjectHeader(object_id); |
913 | 913 |
914 // Write out the class and tags information. | 914 // Write out the class and tags information. |
915 writer->WriteVMIsolateObject(kTokenStreamCid); | 915 writer->WriteVMIsolateObject(kTokenStreamCid); |
916 writer->WriteIntptrValue(writer->GetObjectTags(this)); | 916 writer->WriteTags(writer->GetObjectTags(this)); |
917 | 917 |
918 // Write out the length field and the token stream. | 918 // Write out the length field and the token stream. |
919 RawExternalTypedData* stream = ptr()->stream_; | 919 RawExternalTypedData* stream = ptr()->stream_; |
920 intptr_t len = Smi::Value(stream->ptr()->length_); | 920 intptr_t len = Smi::Value(stream->ptr()->length_); |
921 writer->Write<RawObject*>(stream->ptr()->length_); | 921 writer->Write<RawObject*>(stream->ptr()->length_); |
922 writer->WriteBytes(stream->ptr()->data_, len); | 922 writer->WriteBytes(stream->ptr()->data_, len); |
923 | 923 |
924 // Write out the literal/identifier token array. | 924 // Write out the literal/identifier token array. |
925 writer->WriteObjectImpl(ptr()->token_objects_); | 925 writer->WriteObjectImpl(ptr()->token_objects_); |
926 // Write out the private key in use by the token stream. | 926 // Write out the private key in use by the token stream. |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
970 ASSERT(tokens_ != TokenStream::null()); | 970 ASSERT(tokens_ != TokenStream::null()); |
971 ASSERT(((kind == Snapshot::kScript) && | 971 ASSERT(((kind == Snapshot::kScript) && |
972 !RawObject::IsCreatedFromSnapshot(writer->GetObjectTags(this))) || | 972 !RawObject::IsCreatedFromSnapshot(writer->GetObjectTags(this))) || |
973 (kind == Snapshot::kFull)); | 973 (kind == Snapshot::kFull)); |
974 | 974 |
975 // Write out the serialization header value for this object. | 975 // Write out the serialization header value for this object. |
976 writer->WriteInlinedObjectHeader(object_id); | 976 writer->WriteInlinedObjectHeader(object_id); |
977 | 977 |
978 // Write out the class and tags information. | 978 // Write out the class and tags information. |
979 writer->WriteVMIsolateObject(kScriptCid); | 979 writer->WriteVMIsolateObject(kScriptCid); |
980 writer->WriteIntptrValue(writer->GetObjectTags(this)); | 980 writer->WriteTags(writer->GetObjectTags(this)); |
981 | 981 |
982 // Write out all the object pointer fields. | 982 // Write out all the object pointer fields. |
983 writer->WriteObjectImpl(ptr()->url_); | 983 writer->WriteObjectImpl(ptr()->url_); |
984 writer->WriteObjectImpl(ptr()->tokens_); | 984 writer->WriteObjectImpl(ptr()->tokens_); |
985 | 985 |
986 writer->Write<int32_t>(ptr()->line_offset_); | 986 writer->Write<int32_t>(ptr()->line_offset_); |
987 writer->Write<int32_t>(ptr()->col_offset_); | 987 writer->Write<int32_t>(ptr()->col_offset_); |
988 writer->Write<int8_t>(ptr()->kind_); | 988 writer->Write<int8_t>(ptr()->kind_); |
989 } | 989 } |
990 | 990 |
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1051 intptr_t object_id, | 1051 intptr_t object_id, |
1052 Snapshot::Kind kind) { | 1052 Snapshot::Kind kind) { |
1053 ASSERT(writer != NULL); | 1053 ASSERT(writer != NULL); |
1054 ASSERT(kind != Snapshot::kMessage); | 1054 ASSERT(kind != Snapshot::kMessage); |
1055 | 1055 |
1056 // Write out the serialization header value for this object. | 1056 // Write out the serialization header value for this object. |
1057 writer->WriteInlinedObjectHeader(object_id); | 1057 writer->WriteInlinedObjectHeader(object_id); |
1058 | 1058 |
1059 // Write out the class and tags information. | 1059 // Write out the class and tags information. |
1060 writer->WriteVMIsolateObject(kLibraryCid); | 1060 writer->WriteVMIsolateObject(kLibraryCid); |
1061 writer->WriteIntptrValue(writer->GetObjectTags(this)); | 1061 writer->WriteTags(writer->GetObjectTags(this)); |
1062 | 1062 |
1063 if ((kind == Snapshot::kScript) && | 1063 if ((kind == Snapshot::kScript) && |
1064 RawObject::IsCreatedFromSnapshot(writer->GetObjectTags(this))) { | 1064 RawObject::IsCreatedFromSnapshot(writer->GetObjectTags(this))) { |
1065 ASSERT(kind != Snapshot::kFull); | 1065 ASSERT(kind != Snapshot::kFull); |
1066 // Write out library URL so that it can be looked up when reading. | 1066 // Write out library URL so that it can be looked up when reading. |
1067 writer->WriteObjectImpl(ptr()->url_); | 1067 writer->WriteObjectImpl(ptr()->url_); |
1068 } else { | 1068 } else { |
1069 // Write out all non object fields. | 1069 // Write out all non object fields. |
1070 writer->Write<int32_t>(ptr()->index_); | 1070 writer->Write<int32_t>(ptr()->index_); |
1071 writer->Write<int32_t>(ptr()->num_imports_); | 1071 writer->Write<int32_t>(ptr()->num_imports_); |
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1131 ASSERT(writer != NULL); | 1131 ASSERT(writer != NULL); |
1132 ASSERT(((kind == Snapshot::kScript) && | 1132 ASSERT(((kind == Snapshot::kScript) && |
1133 !RawObject::IsCreatedFromSnapshot(writer->GetObjectTags(this))) || | 1133 !RawObject::IsCreatedFromSnapshot(writer->GetObjectTags(this))) || |
1134 (kind == Snapshot::kFull)); | 1134 (kind == Snapshot::kFull)); |
1135 | 1135 |
1136 // Write out the serialization header value for this object. | 1136 // Write out the serialization header value for this object. |
1137 writer->WriteInlinedObjectHeader(object_id); | 1137 writer->WriteInlinedObjectHeader(object_id); |
1138 | 1138 |
1139 // Write out the class and tags information. | 1139 // Write out the class and tags information. |
1140 writer->WriteIndexedObject(kLibraryPrefixCid); | 1140 writer->WriteIndexedObject(kLibraryPrefixCid); |
1141 writer->WriteIntptrValue(writer->GetObjectTags(this)); | 1141 writer->WriteTags(writer->GetObjectTags(this)); |
1142 | 1142 |
1143 // Write out all non object fields. | 1143 // Write out all non object fields. |
1144 writer->Write<int32_t>(ptr()->num_imports_); | 1144 writer->Write<int32_t>(ptr()->num_imports_); |
1145 writer->Write<bool>(ptr()->is_deferred_load_); | 1145 writer->Write<bool>(ptr()->is_deferred_load_); |
1146 writer->Write<bool>(ptr()->is_loaded_); | 1146 writer->Write<bool>(ptr()->is_loaded_); |
1147 | 1147 |
1148 // Write out all the object pointer fields. | 1148 // Write out all the object pointer fields. |
1149 SnapshotWriterVisitor visitor(writer); | 1149 SnapshotWriterVisitor visitor(writer); |
1150 visitor.VisitPointers(from(), to()); | 1150 visitor.VisitPointers(from(), to()); |
1151 } | 1151 } |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1186 ASSERT(writer != NULL); | 1186 ASSERT(writer != NULL); |
1187 ASSERT(((kind == Snapshot::kScript) && | 1187 ASSERT(((kind == Snapshot::kScript) && |
1188 !RawObject::IsCreatedFromSnapshot(writer->GetObjectTags(this))) || | 1188 !RawObject::IsCreatedFromSnapshot(writer->GetObjectTags(this))) || |
1189 (kind == Snapshot::kFull)); | 1189 (kind == Snapshot::kFull)); |
1190 | 1190 |
1191 // Write out the serialization header value for this object. | 1191 // Write out the serialization header value for this object. |
1192 writer->WriteInlinedObjectHeader(object_id); | 1192 writer->WriteInlinedObjectHeader(object_id); |
1193 | 1193 |
1194 // Write out the class and tags information. | 1194 // Write out the class and tags information. |
1195 writer->WriteVMIsolateObject(kNamespaceCid); | 1195 writer->WriteVMIsolateObject(kNamespaceCid); |
1196 writer->WriteIntptrValue(writer->GetObjectTags(this)); | 1196 writer->WriteTags(writer->GetObjectTags(this)); |
1197 | 1197 |
1198 // Write out all the object pointer fields. | 1198 // Write out all the object pointer fields. |
1199 SnapshotWriterVisitor visitor(writer); | 1199 SnapshotWriterVisitor visitor(writer); |
1200 visitor.VisitPointers(from(), to()); | 1200 visitor.VisitPointers(from(), to()); |
1201 } | 1201 } |
1202 | 1202 |
1203 | 1203 |
1204 RawCode* Code::ReadFrom(SnapshotReader* reader, | 1204 RawCode* Code::ReadFrom(SnapshotReader* reader, |
1205 intptr_t object_id, | 1205 intptr_t object_id, |
1206 intptr_t tags, | 1206 intptr_t tags, |
(...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1354 void RawContext::WriteTo(SnapshotWriter* writer, | 1354 void RawContext::WriteTo(SnapshotWriter* writer, |
1355 intptr_t object_id, | 1355 intptr_t object_id, |
1356 Snapshot::Kind kind) { | 1356 Snapshot::Kind kind) { |
1357 ASSERT(writer != NULL); | 1357 ASSERT(writer != NULL); |
1358 | 1358 |
1359 // Write out the serialization header value for this object. | 1359 // Write out the serialization header value for this object. |
1360 writer->WriteInlinedObjectHeader(object_id); | 1360 writer->WriteInlinedObjectHeader(object_id); |
1361 | 1361 |
1362 // Write out the class and tags information. | 1362 // Write out the class and tags information. |
1363 writer->WriteVMIsolateObject(kContextCid); | 1363 writer->WriteVMIsolateObject(kContextCid); |
1364 writer->WriteIntptrValue(writer->GetObjectTags(this)); | 1364 writer->WriteTags(writer->GetObjectTags(this)); |
1365 | 1365 |
1366 // Write out num of variables in the context. | 1366 // Write out num of variables in the context. |
1367 writer->WriteIntptrValue(ptr()->num_variables_); | 1367 writer->WriteIntptrValue(ptr()->num_variables_); |
1368 | 1368 |
1369 // Can't serialize the isolate pointer, we set it implicitly on read. | 1369 // Can't serialize the isolate pointer, we set it implicitly on read. |
1370 | 1370 |
1371 // Write out all the object pointer fields. | 1371 // Write out all the object pointer fields. |
1372 SnapshotWriterVisitor visitor(writer); | 1372 SnapshotWriterVisitor visitor(writer); |
1373 visitor.VisitPointers(from(), to(ptr()->num_variables_)); | 1373 visitor.VisitPointers(from(), to(ptr()->num_variables_)); |
1374 } | 1374 } |
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1485 void RawApiError::WriteTo(SnapshotWriter* writer, | 1485 void RawApiError::WriteTo(SnapshotWriter* writer, |
1486 intptr_t object_id, | 1486 intptr_t object_id, |
1487 Snapshot::Kind kind) { | 1487 Snapshot::Kind kind) { |
1488 ASSERT(writer != NULL); | 1488 ASSERT(writer != NULL); |
1489 | 1489 |
1490 // Write out the serialization header value for this object. | 1490 // Write out the serialization header value for this object. |
1491 writer->WriteInlinedObjectHeader(object_id); | 1491 writer->WriteInlinedObjectHeader(object_id); |
1492 | 1492 |
1493 // Write out the class and tags information. | 1493 // Write out the class and tags information. |
1494 writer->WriteVMIsolateObject(kApiErrorCid); | 1494 writer->WriteVMIsolateObject(kApiErrorCid); |
1495 writer->WriteIntptrValue(writer->GetObjectTags(this)); | 1495 writer->WriteTags(writer->GetObjectTags(this)); |
1496 | 1496 |
1497 // Write out all the object pointer fields. | 1497 // Write out all the object pointer fields. |
1498 SnapshotWriterVisitor visitor(writer); | 1498 SnapshotWriterVisitor visitor(writer); |
1499 visitor.VisitPointers(from(), to()); | 1499 visitor.VisitPointers(from(), to()); |
1500 } | 1500 } |
1501 | 1501 |
1502 | 1502 |
1503 RawLanguageError* LanguageError::ReadFrom(SnapshotReader* reader, | 1503 RawLanguageError* LanguageError::ReadFrom(SnapshotReader* reader, |
1504 intptr_t object_id, | 1504 intptr_t object_id, |
1505 intptr_t tags, | 1505 intptr_t tags, |
(...skipping 30 matching lines...) Expand all Loading... |
1536 void RawLanguageError::WriteTo(SnapshotWriter* writer, | 1536 void RawLanguageError::WriteTo(SnapshotWriter* writer, |
1537 intptr_t object_id, | 1537 intptr_t object_id, |
1538 Snapshot::Kind kind) { | 1538 Snapshot::Kind kind) { |
1539 ASSERT(writer != NULL); | 1539 ASSERT(writer != NULL); |
1540 | 1540 |
1541 // Write out the serialization header value for this object. | 1541 // Write out the serialization header value for this object. |
1542 writer->WriteInlinedObjectHeader(object_id); | 1542 writer->WriteInlinedObjectHeader(object_id); |
1543 | 1543 |
1544 // Write out the class and tags information. | 1544 // Write out the class and tags information. |
1545 writer->WriteVMIsolateObject(kLanguageErrorCid); | 1545 writer->WriteVMIsolateObject(kLanguageErrorCid); |
1546 writer->WriteIntptrValue(writer->GetObjectTags(this)); | 1546 writer->WriteTags(writer->GetObjectTags(this)); |
1547 | 1547 |
1548 // Write out all the non object fields. | 1548 // Write out all the non object fields. |
1549 writer->Write<int32_t>(ptr()->token_pos_); | 1549 writer->Write<int32_t>(ptr()->token_pos_); |
1550 writer->Write<uint8_t>(ptr()->kind_); | 1550 writer->Write<uint8_t>(ptr()->kind_); |
1551 | 1551 |
1552 // Write out all the object pointer fields. | 1552 // Write out all the object pointer fields. |
1553 SnapshotWriterVisitor visitor(writer); | 1553 SnapshotWriterVisitor visitor(writer); |
1554 visitor.VisitPointers(from(), to()); | 1554 visitor.VisitPointers(from(), to()); |
1555 } | 1555 } |
1556 | 1556 |
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1625 void RawInstance::WriteTo(SnapshotWriter* writer, | 1625 void RawInstance::WriteTo(SnapshotWriter* writer, |
1626 intptr_t object_id, | 1626 intptr_t object_id, |
1627 Snapshot::Kind kind) { | 1627 Snapshot::Kind kind) { |
1628 ASSERT(writer != NULL); | 1628 ASSERT(writer != NULL); |
1629 | 1629 |
1630 // Write out the serialization header value for this object. | 1630 // Write out the serialization header value for this object. |
1631 writer->WriteInlinedObjectHeader(object_id); | 1631 writer->WriteInlinedObjectHeader(object_id); |
1632 | 1632 |
1633 // Write out the class and tags information. | 1633 // Write out the class and tags information. |
1634 writer->WriteIndexedObject(kInstanceCid); | 1634 writer->WriteIndexedObject(kInstanceCid); |
1635 writer->WriteIntptrValue(writer->GetObjectTags(this)); | 1635 writer->WriteTags(writer->GetObjectTags(this)); |
1636 } | 1636 } |
1637 | 1637 |
1638 | 1638 |
1639 RawMint* Mint::ReadFrom(SnapshotReader* reader, | 1639 RawMint* Mint::ReadFrom(SnapshotReader* reader, |
1640 intptr_t object_id, | 1640 intptr_t object_id, |
1641 intptr_t tags, | 1641 intptr_t tags, |
1642 Snapshot::Kind kind) { | 1642 Snapshot::Kind kind) { |
1643 ASSERT(reader != NULL); | 1643 ASSERT(reader != NULL); |
1644 | 1644 |
1645 // Read the 64 bit value for the object. | 1645 // Read the 64 bit value for the object. |
(...skipping 29 matching lines...) Expand all Loading... |
1675 void RawMint::WriteTo(SnapshotWriter* writer, | 1675 void RawMint::WriteTo(SnapshotWriter* writer, |
1676 intptr_t object_id, | 1676 intptr_t object_id, |
1677 Snapshot::Kind kind) { | 1677 Snapshot::Kind kind) { |
1678 ASSERT(writer != NULL); | 1678 ASSERT(writer != NULL); |
1679 | 1679 |
1680 // Write out the serialization header value for this object. | 1680 // Write out the serialization header value for this object. |
1681 writer->WriteInlinedObjectHeader(object_id); | 1681 writer->WriteInlinedObjectHeader(object_id); |
1682 | 1682 |
1683 // Write out the class and tags information. | 1683 // Write out the class and tags information. |
1684 writer->WriteIndexedObject(kMintCid); | 1684 writer->WriteIndexedObject(kMintCid); |
1685 writer->WriteIntptrValue(writer->GetObjectTags(this)); | 1685 writer->WriteTags(writer->GetObjectTags(this)); |
1686 | 1686 |
1687 // Write out the 64 bit value. | 1687 // Write out the 64 bit value. |
1688 writer->Write<int64_t>(ptr()->value_); | 1688 writer->Write<int64_t>(ptr()->value_); |
1689 } | 1689 } |
1690 | 1690 |
1691 | 1691 |
1692 RawBigint* Bigint::ReadFrom(SnapshotReader* reader, | 1692 RawBigint* Bigint::ReadFrom(SnapshotReader* reader, |
1693 intptr_t object_id, | 1693 intptr_t object_id, |
1694 intptr_t tags, | 1694 intptr_t tags, |
1695 Snapshot::Kind kind) { | 1695 Snapshot::Kind kind) { |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1733 void RawBigint::WriteTo(SnapshotWriter* writer, | 1733 void RawBigint::WriteTo(SnapshotWriter* writer, |
1734 intptr_t object_id, | 1734 intptr_t object_id, |
1735 Snapshot::Kind kind) { | 1735 Snapshot::Kind kind) { |
1736 ASSERT(writer != NULL); | 1736 ASSERT(writer != NULL); |
1737 | 1737 |
1738 // Write out the serialization header value for this object. | 1738 // Write out the serialization header value for this object. |
1739 writer->WriteInlinedObjectHeader(object_id); | 1739 writer->WriteInlinedObjectHeader(object_id); |
1740 | 1740 |
1741 // Write out the class and tags information. | 1741 // Write out the class and tags information. |
1742 writer->WriteIndexedObject(kBigintCid); | 1742 writer->WriteIndexedObject(kBigintCid); |
1743 writer->WriteIntptrValue(writer->GetObjectTags(this)); | 1743 writer->WriteTags(writer->GetObjectTags(this)); |
1744 | 1744 |
1745 // Write out the bigint value as a HEXCstring. | 1745 // Write out the bigint value as a HEXCstring. |
1746 intptr_t length = ptr()->signed_length_; | 1746 intptr_t length = ptr()->signed_length_; |
1747 bool is_negative = false; | 1747 bool is_negative = false; |
1748 if (length <= 0) { | 1748 if (length <= 0) { |
1749 length = -length; | 1749 length = -length; |
1750 is_negative = true; | 1750 is_negative = true; |
1751 } | 1751 } |
1752 uword data_start = reinterpret_cast<uword>(ptr()) + sizeof(RawBigint); | 1752 uword data_start = reinterpret_cast<uword>(ptr()) + sizeof(RawBigint); |
1753 const char* str = BigintOperations::ToHexCString( | 1753 const char* str = BigintOperations::ToHexCString( |
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1809 void RawDouble::WriteTo(SnapshotWriter* writer, | 1809 void RawDouble::WriteTo(SnapshotWriter* writer, |
1810 intptr_t object_id, | 1810 intptr_t object_id, |
1811 Snapshot::Kind kind) { | 1811 Snapshot::Kind kind) { |
1812 ASSERT(writer != NULL); | 1812 ASSERT(writer != NULL); |
1813 | 1813 |
1814 // Write out the serialization header value for this object. | 1814 // Write out the serialization header value for this object. |
1815 writer->WriteInlinedObjectHeader(object_id); | 1815 writer->WriteInlinedObjectHeader(object_id); |
1816 | 1816 |
1817 // Write out the class and tags information. | 1817 // Write out the class and tags information. |
1818 writer->WriteIndexedObject(kDoubleCid); | 1818 writer->WriteIndexedObject(kDoubleCid); |
1819 writer->WriteIntptrValue(writer->GetObjectTags(this)); | 1819 writer->WriteTags(writer->GetObjectTags(this)); |
1820 | 1820 |
1821 // Write out the double value. | 1821 // Write out the double value. |
1822 writer->WriteDouble(ptr()->value_); | 1822 writer->WriteDouble(ptr()->value_); |
1823 } | 1823 } |
1824 | 1824 |
1825 | 1825 |
1826 RawString* String::ReadFrom(SnapshotReader* reader, | 1826 RawString* String::ReadFrom(SnapshotReader* reader, |
1827 intptr_t object_id, | 1827 intptr_t object_id, |
1828 intptr_t tags, | 1828 intptr_t tags, |
1829 Snapshot::Kind kind) { | 1829 Snapshot::Kind kind) { |
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1939 RawSmi* hash, | 1939 RawSmi* hash, |
1940 T* data) { | 1940 T* data) { |
1941 ASSERT(writer != NULL); | 1941 ASSERT(writer != NULL); |
1942 intptr_t len = Smi::Value(length); | 1942 intptr_t len = Smi::Value(length); |
1943 | 1943 |
1944 // Write out the serialization header value for this object. | 1944 // Write out the serialization header value for this object. |
1945 writer->WriteInlinedObjectHeader(object_id); | 1945 writer->WriteInlinedObjectHeader(object_id); |
1946 | 1946 |
1947 // Write out the class and tags information. | 1947 // Write out the class and tags information. |
1948 writer->WriteIndexedObject(class_id); | 1948 writer->WriteIndexedObject(class_id); |
1949 writer->WriteIntptrValue(tags); | 1949 writer->WriteTags(tags); |
1950 | 1950 |
1951 // Write out the length field. | 1951 // Write out the length field. |
1952 writer->Write<RawObject*>(length); | 1952 writer->Write<RawObject*>(length); |
1953 | 1953 |
1954 // Write out the hash field. | 1954 // Write out the hash field. |
1955 writer->Write<RawObject*>(hash); | 1955 writer->Write<RawObject*>(hash); |
1956 | 1956 |
1957 // Write out the string. | 1957 // Write out the string. |
1958 if (len > 0) { | 1958 if (len > 0) { |
1959 if (class_id == kOneByteStringCid) { | 1959 if (class_id == kOneByteStringCid) { |
(...skipping 195 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2155 void RawGrowableObjectArray::WriteTo(SnapshotWriter* writer, | 2155 void RawGrowableObjectArray::WriteTo(SnapshotWriter* writer, |
2156 intptr_t object_id, | 2156 intptr_t object_id, |
2157 Snapshot::Kind kind) { | 2157 Snapshot::Kind kind) { |
2158 ASSERT(writer != NULL); | 2158 ASSERT(writer != NULL); |
2159 | 2159 |
2160 // Write out the serialization header value for this object. | 2160 // Write out the serialization header value for this object. |
2161 writer->WriteInlinedObjectHeader(object_id); | 2161 writer->WriteInlinedObjectHeader(object_id); |
2162 | 2162 |
2163 // Write out the class and tags information. | 2163 // Write out the class and tags information. |
2164 writer->WriteIndexedObject(kGrowableObjectArrayCid); | 2164 writer->WriteIndexedObject(kGrowableObjectArrayCid); |
2165 writer->WriteIntptrValue(writer->GetObjectTags(this)); | 2165 writer->WriteTags(writer->GetObjectTags(this)); |
2166 | 2166 |
2167 // Write out the used length field. | 2167 // Write out the used length field. |
2168 writer->Write<RawObject*>(ptr()->length_); | 2168 writer->Write<RawObject*>(ptr()->length_); |
2169 | 2169 |
2170 // Write out the Array object. | 2170 // Write out the Array object. |
2171 writer->WriteObjectImpl(ptr()->data_); | 2171 writer->WriteObjectImpl(ptr()->data_); |
2172 } | 2172 } |
2173 | 2173 |
2174 | 2174 |
2175 RawFloat32x4* Float32x4::ReadFrom(SnapshotReader* reader, | 2175 RawFloat32x4* Float32x4::ReadFrom(SnapshotReader* reader, |
(...skipping 25 matching lines...) Expand all Loading... |
2201 void RawFloat32x4::WriteTo(SnapshotWriter* writer, | 2201 void RawFloat32x4::WriteTo(SnapshotWriter* writer, |
2202 intptr_t object_id, | 2202 intptr_t object_id, |
2203 Snapshot::Kind kind) { | 2203 Snapshot::Kind kind) { |
2204 ASSERT(writer != NULL); | 2204 ASSERT(writer != NULL); |
2205 | 2205 |
2206 // Write out the serialization header value for this object. | 2206 // Write out the serialization header value for this object. |
2207 writer->WriteInlinedObjectHeader(object_id); | 2207 writer->WriteInlinedObjectHeader(object_id); |
2208 | 2208 |
2209 // Write out the class and tags information. | 2209 // Write out the class and tags information. |
2210 writer->WriteIndexedObject(kFloat32x4Cid); | 2210 writer->WriteIndexedObject(kFloat32x4Cid); |
2211 writer->WriteIntptrValue(writer->GetObjectTags(this)); | 2211 writer->WriteTags(writer->GetObjectTags(this)); |
2212 | 2212 |
2213 // Write out the float values. | 2213 // Write out the float values. |
2214 writer->Write<float>(ptr()->value_[0]); | 2214 writer->Write<float>(ptr()->value_[0]); |
2215 writer->Write<float>(ptr()->value_[1]); | 2215 writer->Write<float>(ptr()->value_[1]); |
2216 writer->Write<float>(ptr()->value_[2]); | 2216 writer->Write<float>(ptr()->value_[2]); |
2217 writer->Write<float>(ptr()->value_[3]); | 2217 writer->Write<float>(ptr()->value_[3]); |
2218 } | 2218 } |
2219 | 2219 |
2220 | 2220 |
2221 RawInt32x4* Int32x4::ReadFrom(SnapshotReader* reader, | 2221 RawInt32x4* Int32x4::ReadFrom(SnapshotReader* reader, |
(...skipping 25 matching lines...) Expand all Loading... |
2247 void RawInt32x4::WriteTo(SnapshotWriter* writer, | 2247 void RawInt32x4::WriteTo(SnapshotWriter* writer, |
2248 intptr_t object_id, | 2248 intptr_t object_id, |
2249 Snapshot::Kind kind) { | 2249 Snapshot::Kind kind) { |
2250 ASSERT(writer != NULL); | 2250 ASSERT(writer != NULL); |
2251 | 2251 |
2252 // Write out the serialization header value for this object. | 2252 // Write out the serialization header value for this object. |
2253 writer->WriteInlinedObjectHeader(object_id); | 2253 writer->WriteInlinedObjectHeader(object_id); |
2254 | 2254 |
2255 // Write out the class and tags information. | 2255 // Write out the class and tags information. |
2256 writer->WriteIndexedObject(kInt32x4Cid); | 2256 writer->WriteIndexedObject(kInt32x4Cid); |
2257 writer->WriteIntptrValue(writer->GetObjectTags(this)); | 2257 writer->WriteTags(writer->GetObjectTags(this)); |
2258 | 2258 |
2259 // Write out the mask values. | 2259 // Write out the mask values. |
2260 writer->Write<uint32_t>(ptr()->value_[0]); | 2260 writer->Write<uint32_t>(ptr()->value_[0]); |
2261 writer->Write<uint32_t>(ptr()->value_[1]); | 2261 writer->Write<uint32_t>(ptr()->value_[1]); |
2262 writer->Write<uint32_t>(ptr()->value_[2]); | 2262 writer->Write<uint32_t>(ptr()->value_[2]); |
2263 writer->Write<uint32_t>(ptr()->value_[3]); | 2263 writer->Write<uint32_t>(ptr()->value_[3]); |
2264 } | 2264 } |
2265 | 2265 |
2266 | 2266 |
2267 RawFloat64x2* Float64x2::ReadFrom(SnapshotReader* reader, | 2267 RawFloat64x2* Float64x2::ReadFrom(SnapshotReader* reader, |
(...skipping 23 matching lines...) Expand all Loading... |
2291 void RawFloat64x2::WriteTo(SnapshotWriter* writer, | 2291 void RawFloat64x2::WriteTo(SnapshotWriter* writer, |
2292 intptr_t object_id, | 2292 intptr_t object_id, |
2293 Snapshot::Kind kind) { | 2293 Snapshot::Kind kind) { |
2294 ASSERT(writer != NULL); | 2294 ASSERT(writer != NULL); |
2295 | 2295 |
2296 // Write out the serialization header value for this object. | 2296 // Write out the serialization header value for this object. |
2297 writer->WriteInlinedObjectHeader(object_id); | 2297 writer->WriteInlinedObjectHeader(object_id); |
2298 | 2298 |
2299 // Write out the class and tags information. | 2299 // Write out the class and tags information. |
2300 writer->WriteIndexedObject(kFloat64x2Cid); | 2300 writer->WriteIndexedObject(kFloat64x2Cid); |
2301 writer->WriteIntptrValue(writer->GetObjectTags(this)); | 2301 writer->WriteTags(writer->GetObjectTags(this)); |
2302 | 2302 |
2303 // Write out the float values. | 2303 // Write out the float values. |
2304 writer->Write<double>(ptr()->value_[0]); | 2304 writer->Write<double>(ptr()->value_[0]); |
2305 writer->Write<double>(ptr()->value_[1]); | 2305 writer->Write<double>(ptr()->value_[1]); |
2306 } | 2306 } |
2307 | 2307 |
2308 | 2308 |
2309 #define TYPED_DATA_READ(setter, type) \ | 2309 #define TYPED_DATA_READ(setter, type) \ |
2310 for (intptr_t i = 0; i < length_in_bytes; i += element_size) { \ | 2310 for (intptr_t i = 0; i < length_in_bytes; i += element_size) { \ |
2311 result.Set##setter(i, reader->Read<type>()); \ | 2311 result.Set##setter(i, reader->Read<type>()); \ |
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2404 ASSERT(writer != NULL); | 2404 ASSERT(writer != NULL); |
2405 intptr_t tags = writer->GetObjectTags(this); | 2405 intptr_t tags = writer->GetObjectTags(this); |
2406 intptr_t cid = ClassIdTag::decode(tags); | 2406 intptr_t cid = ClassIdTag::decode(tags); |
2407 intptr_t len = Smi::Value(ptr()->length_); | 2407 intptr_t len = Smi::Value(ptr()->length_); |
2408 | 2408 |
2409 // Write out the serialization header value for this object. | 2409 // Write out the serialization header value for this object. |
2410 writer->WriteInlinedObjectHeader(object_id); | 2410 writer->WriteInlinedObjectHeader(object_id); |
2411 | 2411 |
2412 // Write out the class and tags information. | 2412 // Write out the class and tags information. |
2413 writer->WriteIndexedObject(cid); | 2413 writer->WriteIndexedObject(cid); |
2414 writer->WriteIntptrValue(tags); | 2414 writer->WriteTags(tags); |
2415 | 2415 |
2416 // Write out the length field. | 2416 // Write out the length field. |
2417 writer->Write<RawObject*>(ptr()->length_); | 2417 writer->Write<RawObject*>(ptr()->length_); |
2418 | 2418 |
2419 // Write out the array elements. | 2419 // Write out the array elements. |
2420 switch (cid) { | 2420 switch (cid) { |
2421 case kTypedDataInt8ArrayCid: | 2421 case kTypedDataInt8ArrayCid: |
2422 case kTypedDataUint8ArrayCid: | 2422 case kTypedDataUint8ArrayCid: |
2423 case kTypedDataUint8ClampedArrayCid: { | 2423 case kTypedDataUint8ClampedArrayCid: { |
2424 uint8_t* data = reinterpret_cast<uint8_t*>(ptr()->data()); | 2424 uint8_t* data = reinterpret_cast<uint8_t*>(ptr()->data()); |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2459 { \ | 2459 { \ |
2460 type* data = reinterpret_cast<type*>(ptr()->data_); \ | 2460 type* data = reinterpret_cast<type*>(ptr()->data_); \ |
2461 for (intptr_t i = 0; i < len; i++) { \ | 2461 for (intptr_t i = 0; i < len; i++) { \ |
2462 writer->Write(data[i]); \ | 2462 writer->Write(data[i]); \ |
2463 } \ | 2463 } \ |
2464 } \ | 2464 } \ |
2465 | 2465 |
2466 | 2466 |
2467 #define EXT_TYPED_DATA_WRITE(cid, type) \ | 2467 #define EXT_TYPED_DATA_WRITE(cid, type) \ |
2468 writer->WriteIndexedObject(cid); \ | 2468 writer->WriteIndexedObject(cid); \ |
2469 writer->WriteIntptrValue(RawObject::ClassIdTag::update(cid, tags)); \ | 2469 writer->WriteTags(RawObject::ClassIdTag::update(cid, tags)); \ |
2470 writer->Write<RawObject*>(ptr()->length_); \ | 2470 writer->Write<RawObject*>(ptr()->length_); \ |
2471 TYPED_EXT_DATA_WRITE(type) \ | 2471 TYPED_EXT_DATA_WRITE(type) \ |
2472 | 2472 |
2473 | 2473 |
2474 void RawExternalTypedData::WriteTo(SnapshotWriter* writer, | 2474 void RawExternalTypedData::WriteTo(SnapshotWriter* writer, |
2475 intptr_t object_id, | 2475 intptr_t object_id, |
2476 Snapshot::Kind kind) { | 2476 Snapshot::Kind kind) { |
2477 ASSERT(writer != NULL); | 2477 ASSERT(writer != NULL); |
2478 intptr_t tags = writer->GetObjectTags(this); | 2478 intptr_t tags = writer->GetObjectTags(this); |
2479 intptr_t cid = ClassIdTag::decode(tags); | 2479 intptr_t cid = ClassIdTag::decode(tags); |
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2577 | 2577 |
2578 | 2578 |
2579 void RawSendPort::WriteTo(SnapshotWriter* writer, | 2579 void RawSendPort::WriteTo(SnapshotWriter* writer, |
2580 intptr_t object_id, | 2580 intptr_t object_id, |
2581 Snapshot::Kind kind) { | 2581 Snapshot::Kind kind) { |
2582 // Write out the serialization header value for this object. | 2582 // Write out the serialization header value for this object. |
2583 writer->WriteInlinedObjectHeader(object_id); | 2583 writer->WriteInlinedObjectHeader(object_id); |
2584 | 2584 |
2585 // Write out the class and tags information. | 2585 // Write out the class and tags information. |
2586 writer->WriteIndexedObject(kSendPortCid); | 2586 writer->WriteIndexedObject(kSendPortCid); |
2587 writer->WriteIntptrValue(writer->GetObjectTags(this)); | 2587 writer->WriteTags(writer->GetObjectTags(this)); |
2588 | 2588 |
2589 writer->Write(ptr()->id_); | 2589 writer->Write(ptr()->id_); |
2590 } | 2590 } |
2591 | 2591 |
2592 | 2592 |
2593 RawStacktrace* Stacktrace::ReadFrom(SnapshotReader* reader, | 2593 RawStacktrace* Stacktrace::ReadFrom(SnapshotReader* reader, |
2594 intptr_t object_id, | 2594 intptr_t object_id, |
2595 intptr_t tags, | 2595 intptr_t tags, |
2596 Snapshot::Kind kind) { | 2596 Snapshot::Kind kind) { |
2597 if (kind == Snapshot::kFull) { | 2597 if (kind == Snapshot::kFull) { |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2629 if (kind == Snapshot::kFull) { | 2629 if (kind == Snapshot::kFull) { |
2630 ASSERT(writer != NULL); | 2630 ASSERT(writer != NULL); |
2631 ASSERT(this == Isolate::Current()->object_store()-> | 2631 ASSERT(this == Isolate::Current()->object_store()-> |
2632 preallocated_stack_trace()); | 2632 preallocated_stack_trace()); |
2633 | 2633 |
2634 // Write out the serialization header value for this object. | 2634 // Write out the serialization header value for this object. |
2635 writer->WriteInlinedObjectHeader(object_id); | 2635 writer->WriteInlinedObjectHeader(object_id); |
2636 | 2636 |
2637 // Write out the class and tags information. | 2637 // Write out the class and tags information. |
2638 writer->WriteIndexedObject(kStacktraceCid); | 2638 writer->WriteIndexedObject(kStacktraceCid); |
2639 writer->WriteIntptrValue(writer->GetObjectTags(this)); | 2639 writer->WriteTags(writer->GetObjectTags(this)); |
2640 | 2640 |
2641 // Write out all the object pointer fields. | 2641 // Write out all the object pointer fields. |
2642 SnapshotWriterVisitor visitor(writer); | 2642 SnapshotWriterVisitor visitor(writer); |
2643 visitor.VisitPointers(from(), to()); | 2643 visitor.VisitPointers(from(), to()); |
2644 | 2644 |
2645 writer->Write(ptr()->expand_inlined_); | 2645 writer->Write(ptr()->expand_inlined_); |
2646 } else { | 2646 } else { |
2647 // Stacktraces are not allowed in other snapshot forms. | 2647 // Stacktraces are not allowed in other snapshot forms. |
2648 writer->SetWriteException(Exceptions::kArgument, | 2648 writer->SetWriteException(Exceptions::kArgument, |
2649 "Illegal argument in isolate message" | 2649 "Illegal argument in isolate message" |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2687 intptr_t object_id, | 2687 intptr_t object_id, |
2688 Snapshot::Kind kind) { | 2688 Snapshot::Kind kind) { |
2689 ASSERT(writer != NULL); | 2689 ASSERT(writer != NULL); |
2690 ASSERT(kind == Snapshot::kMessage); | 2690 ASSERT(kind == Snapshot::kMessage); |
2691 | 2691 |
2692 // Write out the serialization header value for this object. | 2692 // Write out the serialization header value for this object. |
2693 writer->WriteInlinedObjectHeader(object_id); | 2693 writer->WriteInlinedObjectHeader(object_id); |
2694 | 2694 |
2695 // Write out the class and tags information. | 2695 // Write out the class and tags information. |
2696 writer->WriteIndexedObject(kJSRegExpCid); | 2696 writer->WriteIndexedObject(kJSRegExpCid); |
2697 writer->WriteIntptrValue(writer->GetObjectTags(this)); | 2697 writer->WriteTags(writer->GetObjectTags(this)); |
2698 | 2698 |
2699 // Write out the data length field. | 2699 // Write out the data length field. |
2700 writer->Write<RawObject*>(ptr()->data_length_); | 2700 writer->Write<RawObject*>(ptr()->data_length_); |
2701 | 2701 |
2702 // Write out all the other fields. | 2702 // Write out all the other fields. |
2703 writer->Write<RawObject*>(ptr()->num_bracket_expressions_); | 2703 writer->Write<RawObject*>(ptr()->num_bracket_expressions_); |
2704 writer->WriteObjectImpl(ptr()->pattern_); | 2704 writer->WriteObjectImpl(ptr()->pattern_); |
2705 writer->WriteIntptrValue(ptr()->type_); | 2705 writer->WriteIntptrValue(ptr()->type_); |
2706 writer->WriteIntptrValue(ptr()->flags_); | 2706 writer->WriteIntptrValue(ptr()->flags_); |
2707 | 2707 |
(...skipping 26 matching lines...) Expand all Loading... |
2734 void RawWeakProperty::WriteTo(SnapshotWriter* writer, | 2734 void RawWeakProperty::WriteTo(SnapshotWriter* writer, |
2735 intptr_t object_id, | 2735 intptr_t object_id, |
2736 Snapshot::Kind kind) { | 2736 Snapshot::Kind kind) { |
2737 ASSERT(writer != NULL); | 2737 ASSERT(writer != NULL); |
2738 | 2738 |
2739 // Write out the serialization header value for this object. | 2739 // Write out the serialization header value for this object. |
2740 writer->WriteInlinedObjectHeader(object_id); | 2740 writer->WriteInlinedObjectHeader(object_id); |
2741 | 2741 |
2742 // Write out the class and tags information. | 2742 // Write out the class and tags information. |
2743 writer->WriteIndexedObject(kWeakPropertyCid); | 2743 writer->WriteIndexedObject(kWeakPropertyCid); |
2744 writer->WriteIntptrValue(writer->GetObjectTags(this)); | 2744 writer->WriteTags(writer->GetObjectTags(this)); |
2745 | 2745 |
2746 // Write out all the other fields. | 2746 // Write out all the other fields. |
2747 writer->Write<RawObject*>(ptr()->key_); | 2747 writer->Write<RawObject*>(ptr()->key_); |
2748 writer->Write<RawObject*>(ptr()->value_); | 2748 writer->Write<RawObject*>(ptr()->value_); |
2749 } | 2749 } |
2750 | 2750 |
2751 | 2751 |
2752 RawMirrorReference* MirrorReference::ReadFrom(SnapshotReader* reader, | 2752 RawMirrorReference* MirrorReference::ReadFrom(SnapshotReader* reader, |
2753 intptr_t object_id, | 2753 intptr_t object_id, |
2754 intptr_t tags, | 2754 intptr_t tags, |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2788 // We do not allow objects with native fields in an isolate message. | 2788 // We do not allow objects with native fields in an isolate message. |
2789 writer->SetWriteException(Exceptions::kArgument, | 2789 writer->SetWriteException(Exceptions::kArgument, |
2790 "Illegal argument in isolate message" | 2790 "Illegal argument in isolate message" |
2791 " : (object is a UserTag)"); | 2791 " : (object is a UserTag)"); |
2792 } else { | 2792 } else { |
2793 UNREACHABLE(); | 2793 UNREACHABLE(); |
2794 } | 2794 } |
2795 } | 2795 } |
2796 | 2796 |
2797 } // namespace dart | 2797 } // namespace dart |
OLD | NEW |