Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(44)

Unified Diff: runtime/vm/clustered_snapshot.h

Issue 2622053002: Refactor snapshots pieces to include a section for loading instructions into the heap of a regular … (Closed)
Patch Set: . Created 3 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « runtime/vm/benchmark_test.cc ('k') | runtime/vm/clustered_snapshot.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: runtime/vm/clustered_snapshot.h
diff --git a/runtime/vm/clustered_snapshot.h b/runtime/vm/clustered_snapshot.h
index 4f7df53f8a79b7352eb1bc2217b7d9d93bbeb3d1..f6ef6fbf6e2093ade2cee4c81cccbd4fd619c8aa 100644
--- a/runtime/vm/clustered_snapshot.h
+++ b/runtime/vm/clustered_snapshot.h
@@ -123,7 +123,8 @@ class Serializer : public StackResource {
~Serializer();
intptr_t WriteVMSnapshot(const Array& symbols, const Array& scripts);
- void WriteFullSnapshot(intptr_t num_base_objects, ObjectStore* object_store);
+ void WriteIsolateSnapshot(intptr_t num_base_objects,
+ ObjectStore* object_store);
void AddVMIsolateBaseObjects();
@@ -206,6 +207,7 @@ class Serializer : public StackResource {
void WriteVersionAndFeatures();
void Serialize();
+ WriteStream* stream() { return &stream_; }
intptr_t bytes_written() { return stream_.bytes_written(); }
// Writes raw data to the stream (basic type).
@@ -294,7 +296,7 @@ class Deserializer : public StackResource {
const uint8_t* data_buffer);
~Deserializer();
- void ReadFullSnapshot(ObjectStore* object_store);
+ void ReadIsolateSnapshot(ObjectStore* object_store);
void ReadVMSnapshot();
void AddVMIsolateBaseObjects();
@@ -350,7 +352,7 @@ class Deserializer : public StackResource {
return Read<int32_t>();
}
- uword GetInstructionsAt(int32_t offset) {
+ RawInstructions* GetInstructionsAt(int32_t offset) {
return instructions_reader_->GetInstructionsAt(offset);
}
@@ -387,17 +389,18 @@ class FullSnapshotWriter {
public:
static const intptr_t kInitialSize = 64 * KB;
FullSnapshotWriter(Snapshot::Kind kind,
- uint8_t** vm_isolate_snapshot_buffer,
- uint8_t** isolate_snapshot_buffer,
+ uint8_t** vm_snapshot_data_buffer,
+ uint8_t** isolate_snapshot_data_buffer,
ReAlloc alloc,
- InstructionsWriter* instructions_writer);
+ InstructionsWriter* vm_instructions_writer,
+ InstructionsWriter* iso_instructions_writer);
~FullSnapshotWriter();
- uint8_t** vm_isolate_snapshot_buffer() const {
- return vm_isolate_snapshot_buffer_;
- }
+ uint8_t** vm_snapshot_data_buffer() const { return vm_snapshot_data_buffer_; }
- uint8_t** isolate_snapshot_buffer() const { return isolate_snapshot_buffer_; }
+ uint8_t** isolate_snapshot_data_buffer() const {
+ return isolate_snapshot_data_buffer_;
+ }
Thread* thread() const { return thread_; }
Zone* zone() const { return thread_->zone(); }
@@ -412,81 +415,44 @@ class FullSnapshotWriter {
private:
// Writes a snapshot of the VM Isolate.
- intptr_t WriteVmIsolateSnapshot();
+ intptr_t WriteVMSnapshot();
// Writes a full snapshot of a regular Dart Isolate.
- void WriteIsolateFullSnapshot(intptr_t num_base_objects);
+ void WriteIsolateSnapshot(intptr_t num_base_objects);
Thread* thread_;
Snapshot::Kind kind_;
- uint8_t** vm_isolate_snapshot_buffer_;
- uint8_t** isolate_snapshot_buffer_;
+ uint8_t** vm_snapshot_data_buffer_;
+ uint8_t** isolate_snapshot_data_buffer_;
ReAlloc alloc_;
intptr_t vm_isolate_snapshot_size_;
intptr_t isolate_snapshot_size_;
ForwardList* forward_list_;
- InstructionsWriter* instructions_writer_;
+ InstructionsWriter* vm_instructions_writer_;
+ InstructionsWriter* isolate_instructions_writer_;
Array& token_streams_;
Array& saved_symbol_table_;
Array& new_vm_symbol_table_;
- DISALLOW_COPY_AND_ASSIGN(FullSnapshotWriter);
-};
-
-
-class VmIsolateSnapshotReader {
- public:
- VmIsolateSnapshotReader(Snapshot::Kind kind,
- const uint8_t* buffer,
- intptr_t size,
- const uint8_t* instructions_buffer,
- const uint8_t* data_buffer,
- Thread* thread)
- : kind_(kind),
- thread_(thread),
- buffer_(buffer),
- size_(size),
- instructions_buffer_(instructions_buffer),
- data_buffer_(data_buffer) {
- thread->isolate()->set_compilation_allowed(kind != Snapshot::kAppAOT);
- }
-
- ~VmIsolateSnapshotReader() {}
-
- RawApiError* ReadVmIsolateSnapshot();
+ // Stats for benchmarking.
+ intptr_t clustered_vm_size_;
+ intptr_t clustered_isolate_size_;
+ intptr_t mapped_data_size_;
+ intptr_t mapped_instructions_size_;
- private:
- Snapshot::Kind kind_;
- Thread* thread_;
- const uint8_t* buffer_;
- intptr_t size_;
- const uint8_t* instructions_buffer_;
- const uint8_t* data_buffer_;
-
- DISALLOW_COPY_AND_ASSIGN(VmIsolateSnapshotReader);
+ DISALLOW_COPY_AND_ASSIGN(FullSnapshotWriter);
};
-class IsolateSnapshotReader {
+class FullSnapshotReader {
public:
- IsolateSnapshotReader(Snapshot::Kind kind,
- const uint8_t* buffer,
- intptr_t size,
- const uint8_t* instructions_buffer,
- const uint8_t* data_buffer,
- Thread* thread)
- : kind_(kind),
- thread_(thread),
- buffer_(buffer),
- size_(size),
- instructions_buffer_(instructions_buffer),
- data_buffer_(data_buffer) {
- thread->isolate()->set_compilation_allowed(kind != Snapshot::kAppAOT);
- }
-
- ~IsolateSnapshotReader() {}
+ FullSnapshotReader(const Snapshot* snapshot,
+ const uint8_t* instructions_buffer,
+ Thread* thread);
+ ~FullSnapshotReader() {}
- RawApiError* ReadFullSnapshot();
+ RawApiError* ReadVMSnapshot();
+ RawApiError* ReadIsolateSnapshot();
private:
Snapshot::Kind kind_;
@@ -496,7 +462,7 @@ class IsolateSnapshotReader {
const uint8_t* instructions_buffer_;
const uint8_t* data_buffer_;
- DISALLOW_COPY_AND_ASSIGN(IsolateSnapshotReader);
+ DISALLOW_COPY_AND_ASSIGN(FullSnapshotReader);
};
} // namespace dart
« no previous file with comments | « runtime/vm/benchmark_test.cc ('k') | runtime/vm/clustered_snapshot.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698