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

Unified Diff: runtime/vm/clustered_snapshot.cc

Issue 2583673002: When creating a JIT app snapshot, don't recreate the VM isolate snapshot. (Closed)
Patch Set: Created 4 years 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
Index: runtime/vm/clustered_snapshot.cc
diff --git a/runtime/vm/clustered_snapshot.cc b/runtime/vm/clustered_snapshot.cc
index 65a001d57ad155717e08b1467c294aead16b295f..89f3be70a310351fdc1f8868ad00fe5a61d8b169 100644
--- a/runtime/vm/clustered_snapshot.cc
+++ b/runtime/vm/clustered_snapshot.cc
@@ -4666,6 +4666,12 @@ void Serializer::AddVMIsolateBaseObjects() {
}
AddBaseObject(table->At(kDynamicCid));
AddBaseObject(table->At(kVoidCid));
+
+ if (kind_ != Snapshot::kAppAOT) {
+ for (intptr_t i = 0; i < StubCode::NumEntries(); i++) {
+ AddBaseObject(StubCode::EntryAt(i)->code());
+ }
+ }
}
@@ -4679,7 +4685,9 @@ intptr_t Serializer::WriteVMSnapshot(const Array& symbols,
Push(symbols.raw());
Push(scripts.raw());
if (Snapshot::IncludesCode(kind_)) {
- StubCode::Push(this);
+ for (intptr_t i = 0; i < StubCode::NumEntries(); i++) {
+ Push(StubCode::EntryAt(i)->code());
+ }
}
Serialize();
@@ -4688,7 +4696,9 @@ intptr_t Serializer::WriteVMSnapshot(const Array& symbols,
WriteRef(symbols.raw());
WriteRef(scripts.raw());
if (Snapshot::IncludesCode(kind_)) {
- StubCode::WriteRef(this);
+ for (intptr_t i = 0; i < StubCode::NumEntries(); i++) {
+ WriteRef(StubCode::EntryAt(i)->code());
+ }
}
#if defined(DEBUG)
@@ -5050,6 +5060,12 @@ void Deserializer::AddVMIsolateBaseObjects() {
}
AddBaseObject(table->At(kDynamicCid));
AddBaseObject(table->At(kVoidCid));
+
+ if (kind_ != Snapshot::kAppAOT) {
+ for (intptr_t i = 0; i < StubCode::NumEntries(); i++) {
+ AddBaseObject(StubCode::EntryAt(i)->code());
+ }
+ }
}
@@ -5071,7 +5087,11 @@ void Deserializer::ReadVMSnapshot() {
isolate()->object_store()->set_symbol_table(symbol_table);
ReadRef(); // Script list.
if (Snapshot::IncludesCode(kind_)) {
- StubCode::ReadRef(this);
+ Code& code = Code::Handle(zone_);
+ for (intptr_t i = 0; i < StubCode::NumEntries(); i++) {
+ code ^= ReadRef();
+ StubCode::EntryAtPut(i, new StubEntry(code));
+ }
}
#if defined(DEBUG)
@@ -5316,8 +5336,10 @@ void FullSnapshotWriter::WriteFullSnapshot() {
if (Snapshot::IncludesCode(kind_)) {
instructions_writer_->Write(
- *vm_isolate_snapshot_buffer_, vm_isolate_snapshot_size_,
- *isolate_snapshot_buffer_, isolate_snapshot_size_);
+ vm_isolate_snapshot_buffer_ == NULL ? NULL
+ : *vm_isolate_snapshot_buffer_,
+ vm_isolate_snapshot_size_, *isolate_snapshot_buffer_,
+ isolate_snapshot_size_);
if (FLAG_print_snapshot_sizes) {
OS::Print("ReadOnlyData(CodeSize): %" Pd "\n",
« no previous file with comments | « runtime/include/dart_api.h ('k') | runtime/vm/dart.cc » ('j') | runtime/vm/stub_code.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698