| OLD | NEW |
| 1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2016, 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 RUNTIME_VM_CLUSTERED_SNAPSHOT_H_ | 5 #ifndef RUNTIME_VM_CLUSTERED_SNAPSHOT_H_ |
| 6 #define RUNTIME_VM_CLUSTERED_SNAPSHOT_H_ | 6 #define RUNTIME_VM_CLUSTERED_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 101 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 112 typedef DirectChainedHashMap<SmiObjectIdPairTrait> SmiObjectIdMap; | 112 typedef DirectChainedHashMap<SmiObjectIdPairTrait> SmiObjectIdMap; |
| 113 | 113 |
| 114 | 114 |
| 115 class Serializer : public StackResource { | 115 class Serializer : public StackResource { |
| 116 public: | 116 public: |
| 117 Serializer(Thread* thread, | 117 Serializer(Thread* thread, |
| 118 Snapshot::Kind kind, | 118 Snapshot::Kind kind, |
| 119 uint8_t** buffer, | 119 uint8_t** buffer, |
| 120 ReAlloc alloc, | 120 ReAlloc alloc, |
| 121 intptr_t initial_size, | 121 intptr_t initial_size, |
| 122 InstructionsWriter* instructions_writer_); | 122 ImageWriter* image_writer_); |
| 123 ~Serializer(); | 123 ~Serializer(); |
| 124 | 124 |
| 125 intptr_t WriteVMSnapshot(const Array& symbols, const Array& scripts); | 125 intptr_t WriteVMSnapshot(const Array& symbols, const Array& scripts); |
| 126 void WriteIsolateSnapshot(intptr_t num_base_objects, | 126 void WriteIsolateSnapshot(intptr_t num_base_objects, |
| 127 ObjectStore* object_store); | 127 ObjectStore* object_store); |
| 128 | 128 |
| 129 void AddVMIsolateBaseObjects(); | 129 void AddVMIsolateBaseObjects(); |
| 130 | 130 |
| 131 void AddBaseObject(RawObject* base_object) { | 131 void AddBaseObject(RawObject* base_object) { |
| 132 AssignRef(base_object); | 132 AssignRef(base_object); |
| (...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 252 void WriteTokenPosition(TokenPosition pos) { | 252 void WriteTokenPosition(TokenPosition pos) { |
| 253 Write<int32_t>(pos.SnapshotEncode()); | 253 Write<int32_t>(pos.SnapshotEncode()); |
| 254 } | 254 } |
| 255 | 255 |
| 256 void WriteCid(intptr_t cid) { | 256 void WriteCid(intptr_t cid) { |
| 257 COMPILE_ASSERT(RawObject::kClassIdTagSize <= 32); | 257 COMPILE_ASSERT(RawObject::kClassIdTagSize <= 32); |
| 258 Write<int32_t>(cid); | 258 Write<int32_t>(cid); |
| 259 } | 259 } |
| 260 | 260 |
| 261 int32_t GetTextOffset(RawInstructions* instr, RawCode* code) { | 261 int32_t GetTextOffset(RawInstructions* instr, RawCode* code) { |
| 262 return instructions_writer_->GetOffsetFor(instr, code); | 262 return image_writer_->GetOffsetFor(instr, code); |
| 263 } | 263 } |
| 264 | 264 |
| 265 int32_t GetRODataOffset(RawObject* object) { | 265 int32_t GetRODataOffset(RawObject* object) { |
| 266 return instructions_writer_->GetObjectOffsetFor(object); | 266 return image_writer_->GetObjectOffsetFor(object); |
| 267 } | 267 } |
| 268 | 268 |
| 269 Snapshot::Kind kind() const { return kind_; } | 269 Snapshot::Kind kind() const { return kind_; } |
| 270 | 270 |
| 271 private: | 271 private: |
| 272 Heap* heap_; | 272 Heap* heap_; |
| 273 Zone* zone_; | 273 Zone* zone_; |
| 274 Snapshot::Kind kind_; | 274 Snapshot::Kind kind_; |
| 275 WriteStream stream_; | 275 WriteStream stream_; |
| 276 InstructionsWriter* instructions_writer_; | 276 ImageWriter* image_writer_; |
| 277 SerializationCluster** clusters_by_cid_; | 277 SerializationCluster** clusters_by_cid_; |
| 278 GrowableArray<RawObject*> stack_; | 278 GrowableArray<RawObject*> stack_; |
| 279 intptr_t num_cids_; | 279 intptr_t num_cids_; |
| 280 intptr_t num_base_objects_; | 280 intptr_t num_base_objects_; |
| 281 intptr_t num_written_objects_; | 281 intptr_t num_written_objects_; |
| 282 intptr_t next_ref_index_; | 282 intptr_t next_ref_index_; |
| 283 SmiObjectIdMap smi_ids_; | 283 SmiObjectIdMap smi_ids_; |
| 284 | 284 |
| 285 DISALLOW_IMPLICIT_CONSTRUCTORS(Serializer); | 285 DISALLOW_IMPLICIT_CONSTRUCTORS(Serializer); |
| 286 }; | 286 }; |
| (...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 385 }; | 385 }; |
| 386 | 386 |
| 387 | 387 |
| 388 class FullSnapshotWriter { | 388 class FullSnapshotWriter { |
| 389 public: | 389 public: |
| 390 static const intptr_t kInitialSize = 64 * KB; | 390 static const intptr_t kInitialSize = 64 * KB; |
| 391 FullSnapshotWriter(Snapshot::Kind kind, | 391 FullSnapshotWriter(Snapshot::Kind kind, |
| 392 uint8_t** vm_snapshot_data_buffer, | 392 uint8_t** vm_snapshot_data_buffer, |
| 393 uint8_t** isolate_snapshot_data_buffer, | 393 uint8_t** isolate_snapshot_data_buffer, |
| 394 ReAlloc alloc, | 394 ReAlloc alloc, |
| 395 InstructionsWriter* vm_instructions_writer, | 395 ImageWriter* vm_image_writer, |
| 396 InstructionsWriter* iso_instructions_writer); | 396 ImageWriter* iso_image_writer); |
| 397 ~FullSnapshotWriter(); | 397 ~FullSnapshotWriter(); |
| 398 | 398 |
| 399 uint8_t** vm_snapshot_data_buffer() const { return vm_snapshot_data_buffer_; } | 399 uint8_t** vm_snapshot_data_buffer() const { return vm_snapshot_data_buffer_; } |
| 400 | 400 |
| 401 uint8_t** isolate_snapshot_data_buffer() const { | 401 uint8_t** isolate_snapshot_data_buffer() const { |
| 402 return isolate_snapshot_data_buffer_; | 402 return isolate_snapshot_data_buffer_; |
| 403 } | 403 } |
| 404 | 404 |
| 405 Thread* thread() const { return thread_; } | 405 Thread* thread() const { return thread_; } |
| 406 Zone* zone() const { return thread_->zone(); } | 406 Zone* zone() const { return thread_->zone(); } |
| (...skipping 14 matching lines...) Expand all Loading... |
| 421 void WriteIsolateSnapshot(intptr_t num_base_objects); | 421 void WriteIsolateSnapshot(intptr_t num_base_objects); |
| 422 | 422 |
| 423 Thread* thread_; | 423 Thread* thread_; |
| 424 Snapshot::Kind kind_; | 424 Snapshot::Kind kind_; |
| 425 uint8_t** vm_snapshot_data_buffer_; | 425 uint8_t** vm_snapshot_data_buffer_; |
| 426 uint8_t** isolate_snapshot_data_buffer_; | 426 uint8_t** isolate_snapshot_data_buffer_; |
| 427 ReAlloc alloc_; | 427 ReAlloc alloc_; |
| 428 intptr_t vm_isolate_snapshot_size_; | 428 intptr_t vm_isolate_snapshot_size_; |
| 429 intptr_t isolate_snapshot_size_; | 429 intptr_t isolate_snapshot_size_; |
| 430 ForwardList* forward_list_; | 430 ForwardList* forward_list_; |
| 431 InstructionsWriter* vm_instructions_writer_; | 431 ImageWriter* vm_image_writer_; |
| 432 InstructionsWriter* isolate_instructions_writer_; | 432 ImageWriter* isolate_image_writer_; |
| 433 Array& token_streams_; | 433 Array& token_streams_; |
| 434 Array& saved_symbol_table_; | 434 Array& saved_symbol_table_; |
| 435 Array& new_vm_symbol_table_; | 435 Array& new_vm_symbol_table_; |
| 436 | 436 |
| 437 // Stats for benchmarking. | 437 // Stats for benchmarking. |
| 438 intptr_t clustered_vm_size_; | 438 intptr_t clustered_vm_size_; |
| 439 intptr_t clustered_isolate_size_; | 439 intptr_t clustered_isolate_size_; |
| 440 intptr_t mapped_data_size_; | 440 intptr_t mapped_data_size_; |
| 441 intptr_t mapped_instructions_size_; | 441 intptr_t mapped_instructions_size_; |
| 442 | 442 |
| (...skipping 18 matching lines...) Expand all Loading... |
| 461 intptr_t size_; | 461 intptr_t size_; |
| 462 const uint8_t* instructions_buffer_; | 462 const uint8_t* instructions_buffer_; |
| 463 const uint8_t* data_buffer_; | 463 const uint8_t* data_buffer_; |
| 464 | 464 |
| 465 DISALLOW_COPY_AND_ASSIGN(FullSnapshotReader); | 465 DISALLOW_COPY_AND_ASSIGN(FullSnapshotReader); |
| 466 }; | 466 }; |
| 467 | 467 |
| 468 } // namespace dart | 468 } // namespace dart |
| 469 | 469 |
| 470 #endif // RUNTIME_VM_CLUSTERED_SNAPSHOT_H_ | 470 #endif // RUNTIME_VM_CLUSTERED_SNAPSHOT_H_ |
| OLD | NEW |