| 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 #ifndef VM_SNAPSHOT_H_ | 5 #ifndef VM_SNAPSHOT_H_ |
| 6 #define VM_SNAPSHOT_H_ | 6 #define VM_SNAPSHOT_H_ |
| 7 | 7 |
| 8 #include "platform/assert.h" | 8 #include "platform/assert.h" |
| 9 #include "vm/allocation.h" | 9 #include "vm/allocation.h" |
| 10 #include "vm/bitfield.h" | 10 #include "vm/bitfield.h" |
| (...skipping 205 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 216 } | 216 } |
| 217 | 217 |
| 218 const uint8_t* CurrentBufferAddress() const { | 218 const uint8_t* CurrentBufferAddress() const { |
| 219 return stream_.AddressOfCurrentPosition(); | 219 return stream_.AddressOfCurrentPosition(); |
| 220 } | 220 } |
| 221 | 221 |
| 222 void Advance(intptr_t value) { | 222 void Advance(intptr_t value) { |
| 223 stream_.Advance(value); | 223 stream_.Advance(value); |
| 224 } | 224 } |
| 225 | 225 |
| 226 intptr_t PendingBytes() const { |
| 227 return stream_.PendingBytes(); |
| 228 } |
| 229 |
| 226 RawSmi* ReadAsSmi(); | 230 RawSmi* ReadAsSmi(); |
| 227 intptr_t ReadSmiValue(); | 231 intptr_t ReadSmiValue(); |
| 228 | 232 |
| 229 // Negative header value indicates VM isolate object id. | 233 // Negative header value indicates VM isolate object id. |
| 230 bool IsVMIsolateObject(intptr_t header_value) { return (header_value < 0); } | 234 bool IsVMIsolateObject(intptr_t header_value) { return (header_value < 0); } |
| 231 intptr_t GetVMIsolateObjectId(intptr_t header_val) { | 235 intptr_t GetVMIsolateObjectId(intptr_t header_val) { |
| 232 ASSERT(IsVMIsolateObject(header_val)); | 236 ASSERT(IsVMIsolateObject(header_val)); |
| 233 intptr_t value = -header_val; // Header is negative for VM isolate objects. | 237 intptr_t value = -header_val; // Header is negative for VM isolate objects. |
| 234 ASSERT(SerializedHeaderTag::decode(value) == kObjectId); | 238 ASSERT(SerializedHeaderTag::decode(value) == kObjectId); |
| 235 return SerializedHeaderData::decode(value); | 239 return SerializedHeaderData::decode(value); |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 270 | 274 |
| 271 // Get an object from the backward references list. | 275 // Get an object from the backward references list. |
| 272 Object* GetBackRef(intptr_t id); | 276 Object* GetBackRef(intptr_t id); |
| 273 | 277 |
| 274 // Read a full snap shot. | 278 // Read a full snap shot. |
| 275 RawApiError* ReadFullSnapshot(); | 279 RawApiError* ReadFullSnapshot(); |
| 276 | 280 |
| 277 // Read a script snap shot. | 281 // Read a script snap shot. |
| 278 RawObject* ReadScriptSnapshot(); | 282 RawObject* ReadScriptSnapshot(); |
| 279 | 283 |
| 284 // Read version number of snapshot and verify. |
| 285 RawApiError* VerifyVersion(); |
| 286 |
| 280 // Helper functions for creating uninitialized versions | 287 // Helper functions for creating uninitialized versions |
| 281 // of various object types. These are used when reading a | 288 // of various object types. These are used when reading a |
| 282 // full snapshot. | 289 // full snapshot. |
| 283 RawArray* NewArray(intptr_t len); | 290 RawArray* NewArray(intptr_t len); |
| 284 RawImmutableArray* NewImmutableArray(intptr_t len); | 291 RawImmutableArray* NewImmutableArray(intptr_t len); |
| 285 RawOneByteString* NewOneByteString(intptr_t len); | 292 RawOneByteString* NewOneByteString(intptr_t len); |
| 286 RawTwoByteString* NewTwoByteString(intptr_t len); | 293 RawTwoByteString* NewTwoByteString(intptr_t len); |
| 287 RawTypeArguments* NewTypeArguments(intptr_t len); | 294 RawTypeArguments* NewTypeArguments(intptr_t len); |
| 288 RawTokenStream* NewTokenStream(intptr_t len); | 295 RawTokenStream* NewTokenStream(intptr_t len); |
| 289 RawContext* NewContext(intptr_t num_variables); | 296 RawContext* NewContext(intptr_t num_variables); |
| (...skipping 297 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 587 } | 594 } |
| 588 void set_exception_type(Exceptions::ExceptionType type) { | 595 void set_exception_type(Exceptions::ExceptionType type) { |
| 589 exception_type_ = type; | 596 exception_type_ = type; |
| 590 } | 597 } |
| 591 const char* exception_msg() const { return exception_msg_; } | 598 const char* exception_msg() const { return exception_msg_; } |
| 592 void set_exception_msg(const char* msg) { | 599 void set_exception_msg(const char* msg) { |
| 593 exception_msg_ = msg; | 600 exception_msg_ = msg; |
| 594 } | 601 } |
| 595 void ThrowException(Exceptions::ExceptionType type, const char* msg); | 602 void ThrowException(Exceptions::ExceptionType type, const char* msg); |
| 596 | 603 |
| 604 // Write a version string for the snapshot. |
| 605 void WriteVersion(); |
| 606 |
| 597 protected: | 607 protected: |
| 598 void UnmarkAll() { | 608 void UnmarkAll() { |
| 599 forward_list_.UnmarkAll(); | 609 forward_list_.UnmarkAll(); |
| 600 } | 610 } |
| 601 | 611 |
| 602 bool CheckAndWritePredefinedObject(RawObject* raw); | 612 bool CheckAndWritePredefinedObject(RawObject* raw); |
| 603 void HandleVMIsolateObject(RawObject* raw); | 613 void HandleVMIsolateObject(RawObject* raw); |
| 604 | 614 |
| 605 void WriteObjectRef(RawObject* raw); | 615 void WriteObjectRef(RawObject* raw); |
| 606 void WriteClassId(RawClass* cls); | 616 void WriteClassId(RawClass* cls); |
| (...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 725 private: | 735 private: |
| 726 SnapshotWriter* writer_; | 736 SnapshotWriter* writer_; |
| 727 bool as_references_; | 737 bool as_references_; |
| 728 | 738 |
| 729 DISALLOW_COPY_AND_ASSIGN(SnapshotWriterVisitor); | 739 DISALLOW_COPY_AND_ASSIGN(SnapshotWriterVisitor); |
| 730 }; | 740 }; |
| 731 | 741 |
| 732 } // namespace dart | 742 } // namespace dart |
| 733 | 743 |
| 734 #endif // VM_SNAPSHOT_H_ | 744 #endif // VM_SNAPSHOT_H_ |
| OLD | NEW |