| 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/symbols.h" | 9 #include "vm/symbols.h" |
| 10 #include "vm/visitor.h" | 10 #include "vm/visitor.h" |
| (...skipping 2553 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2564 break; | 2564 break; |
| 2565 case kTypedDataFloat64ArrayCid: | 2565 case kTypedDataFloat64ArrayCid: |
| 2566 TYPED_DATA_WRITE(double); // NOLINT. | 2566 TYPED_DATA_WRITE(double); // NOLINT. |
| 2567 break; | 2567 break; |
| 2568 default: | 2568 default: |
| 2569 UNREACHABLE(); | 2569 UNREACHABLE(); |
| 2570 } | 2570 } |
| 2571 } | 2571 } |
| 2572 | 2572 |
| 2573 | 2573 |
| 2574 #define EXT_TYPED_DATA_WRITE(cid, type) \ |
| 2575 writer->WriteIndexedObject(cid); \ |
| 2576 writer->WriteIntptrValue(RawObject::ClassIdTag::update(cid, tags)); \ |
| 2577 writer->Write<RawObject*>(ptr()->length_); \ |
| 2578 TYPED_DATA_WRITE(type) \ |
| 2579 |
| 2580 |
| 2574 void RawExternalTypedData::WriteTo(SnapshotWriter* writer, | 2581 void RawExternalTypedData::WriteTo(SnapshotWriter* writer, |
| 2575 intptr_t object_id, | 2582 intptr_t object_id, |
| 2576 Snapshot::Kind kind) { | 2583 Snapshot::Kind kind) { |
| 2577 ASSERT(writer != NULL); | 2584 ASSERT(writer != NULL); |
| 2578 intptr_t tags = writer->GetObjectTags(this); | 2585 intptr_t tags = writer->GetObjectTags(this); |
| 2579 intptr_t cid = ClassIdTag::decode(tags); | 2586 intptr_t cid = ClassIdTag::decode(tags); |
| 2580 intptr_t len = Smi::Value(ptr()->length_); | 2587 intptr_t len = Smi::Value(ptr()->length_); |
| 2581 | 2588 |
| 2582 // Write out the serialization header value for this object. | 2589 // Write out the serialization header value for this object. |
| 2583 writer->WriteInlinedObjectHeader(object_id); | 2590 writer->WriteInlinedObjectHeader(object_id); |
| 2584 | 2591 |
| 2585 // Write out the class and tags information. | |
| 2586 writer->WriteIndexedObject(cid); | |
| 2587 writer->WriteIntptrValue(tags); | |
| 2588 | |
| 2589 // Write out the length field. | |
| 2590 writer->Write<RawObject*>(ptr()->length_); | |
| 2591 | |
| 2592 switch (cid) { | 2592 switch (cid) { |
| 2593 case kExternalTypedDataInt8ArrayCid: | 2593 case kExternalTypedDataInt8ArrayCid: |
| 2594 TYPED_DATA_WRITE(int8_t); | 2594 EXT_TYPED_DATA_WRITE(kTypedDataInt8ArrayCid, int8_t); |
| 2595 break; | 2595 break; |
| 2596 case kExternalTypedDataUint8ArrayCid: | 2596 case kExternalTypedDataUint8ArrayCid: |
| 2597 TYPED_DATA_WRITE(uint8_t); | 2597 EXT_TYPED_DATA_WRITE(kTypedDataUint8ArrayCid, uint8_t); |
| 2598 break; | 2598 break; |
| 2599 case kExternalTypedDataUint8ClampedArrayCid: | 2599 case kExternalTypedDataUint8ClampedArrayCid: |
| 2600 TYPED_DATA_WRITE(uint8_t); | 2600 EXT_TYPED_DATA_WRITE(kTypedDataUint8ClampedArrayCid, uint8_t); |
| 2601 break; | 2601 break; |
| 2602 case kExternalTypedDataInt16ArrayCid: | 2602 case kExternalTypedDataInt16ArrayCid: |
| 2603 TYPED_DATA_WRITE(int16_t); | 2603 EXT_TYPED_DATA_WRITE(kTypedDataInt16ArrayCid, int16_t); |
| 2604 break; | 2604 break; |
| 2605 case kExternalTypedDataUint16ArrayCid: | 2605 case kExternalTypedDataUint16ArrayCid: |
| 2606 TYPED_DATA_WRITE(uint16_t); | 2606 EXT_TYPED_DATA_WRITE(kTypedDataUint16ArrayCid, uint16_t); |
| 2607 break; | 2607 break; |
| 2608 case kExternalTypedDataInt32ArrayCid: | 2608 case kExternalTypedDataInt32ArrayCid: |
| 2609 TYPED_DATA_WRITE(int32_t); | 2609 EXT_TYPED_DATA_WRITE(kTypedDataInt32ArrayCid, int32_t); |
| 2610 break; | 2610 break; |
| 2611 case kExternalTypedDataUint32ArrayCid: | 2611 case kExternalTypedDataUint32ArrayCid: |
| 2612 TYPED_DATA_WRITE(uint32_t); | 2612 EXT_TYPED_DATA_WRITE(kTypedDataUint32ArrayCid, uint32_t); |
| 2613 break; | 2613 break; |
| 2614 case kExternalTypedDataInt64ArrayCid: | 2614 case kExternalTypedDataInt64ArrayCid: |
| 2615 TYPED_DATA_WRITE(int64_t); | 2615 EXT_TYPED_DATA_WRITE(kTypedDataInt64ArrayCid, int64_t); |
| 2616 break; | 2616 break; |
| 2617 case kExternalTypedDataUint64ArrayCid: | 2617 case kExternalTypedDataUint64ArrayCid: |
| 2618 TYPED_DATA_WRITE(uint64_t); | 2618 EXT_TYPED_DATA_WRITE(kTypedDataUint64ArrayCid, uint64_t); |
| 2619 break; | 2619 break; |
| 2620 case kExternalTypedDataFloat32ArrayCid: | 2620 case kExternalTypedDataFloat32ArrayCid: |
| 2621 TYPED_DATA_WRITE(float); // NOLINT. | 2621 EXT_TYPED_DATA_WRITE(kTypedDataFloat32ArrayCid, float); // NOLINT. |
| 2622 break; | 2622 break; |
| 2623 case kExternalTypedDataFloat64ArrayCid: | 2623 case kExternalTypedDataFloat64ArrayCid: |
| 2624 TYPED_DATA_WRITE(double); // NOLINT. | 2624 EXT_TYPED_DATA_WRITE(kTypedDataFloat64ArrayCid, double); // NOLINT. |
| 2625 break; | 2625 break; |
| 2626 default: | 2626 default: |
| 2627 UNREACHABLE(); | 2627 UNREACHABLE(); |
| 2628 } | 2628 } |
| 2629 } | 2629 } |
| 2630 #undef TYPED_DATA_WRITE | 2630 #undef TYPED_DATA_WRITE |
| 2631 #undef EXT_TYPED_DATA_WRITE |
| 2631 | 2632 |
| 2632 | 2633 |
| 2633 RawDartFunction* DartFunction::ReadFrom(SnapshotReader* reader, | 2634 RawDartFunction* DartFunction::ReadFrom(SnapshotReader* reader, |
| 2634 intptr_t object_id, | 2635 intptr_t object_id, |
| 2635 intptr_t tags, | 2636 intptr_t tags, |
| 2636 Snapshot::Kind kind) { | 2637 Snapshot::Kind kind) { |
| 2637 UNREACHABLE(); // DartFunction is an abstract class. | 2638 UNREACHABLE(); // DartFunction is an abstract class. |
| 2638 return DartFunction::null(); | 2639 return DartFunction::null(); |
| 2639 } | 2640 } |
| 2640 | 2641 |
| (...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2796 // Write out the class and tags information. | 2797 // Write out the class and tags information. |
| 2797 writer->WriteIndexedObject(kWeakPropertyCid); | 2798 writer->WriteIndexedObject(kWeakPropertyCid); |
| 2798 writer->WriteIntptrValue(writer->GetObjectTags(this)); | 2799 writer->WriteIntptrValue(writer->GetObjectTags(this)); |
| 2799 | 2800 |
| 2800 // Write out all the other fields. | 2801 // Write out all the other fields. |
| 2801 writer->Write<RawObject*>(ptr()->key_); | 2802 writer->Write<RawObject*>(ptr()->key_); |
| 2802 writer->Write<RawObject*>(ptr()->value_); | 2803 writer->Write<RawObject*>(ptr()->value_); |
| 2803 } | 2804 } |
| 2804 | 2805 |
| 2805 } // namespace dart | 2806 } // namespace dart |
| OLD | NEW |