Index: src/snapshot/snapshot-common.cc |
diff --git a/src/snapshot/snapshot-common.cc b/src/snapshot/snapshot-common.cc |
index fed45d16b6c3528d241284765bbeb8631c489617..959ac56fa98aa6a182062c76126f53e24c6bb193 100644 |
--- a/src/snapshot/snapshot-common.cc |
+++ b/src/snapshot/snapshot-common.cc |
@@ -31,19 +31,6 @@ bool Snapshot::HasContextSnapshot(Isolate* isolate, size_t index) { |
return index < num_contexts; |
} |
- |
-uint32_t Snapshot::SizeOfFirstPage(Isolate* isolate, AllocationSpace space) { |
- DCHECK(space >= FIRST_PAGED_SPACE && space <= LAST_PAGED_SPACE); |
- if (!isolate->snapshot_available()) { |
- return static_cast<uint32_t>(MemoryAllocator::PageAreaSize(space)); |
- } |
- uint32_t size; |
- int offset = kFirstPageSizesOffset + (space - FIRST_PAGED_SPACE) * kInt32Size; |
- memcpy(&size, isolate->snapshot_blob()->data + offset, kInt32Size); |
- return size; |
-} |
- |
- |
bool Snapshot::Initialize(Isolate* isolate) { |
if (!isolate->snapshot_available()) return false; |
base::ElapsedTimer timer; |
@@ -89,25 +76,8 @@ MaybeHandle<Context> Snapshot::NewContextFromSnapshot( |
return Handle<Context>::cast(result); |
} |
-void UpdateMaxRequirementPerPage( |
- uint32_t* requirements, |
- Vector<const SerializedData::Reservation> reservations) { |
- int space = 0; |
- uint32_t current_requirement = 0; |
- for (const auto& reservation : reservations) { |
- current_requirement += reservation.chunk_size(); |
- if (reservation.is_last()) { |
- requirements[space] = std::max(requirements[space], current_requirement); |
- current_requirement = 0; |
- space++; |
- } |
- } |
- DCHECK_EQ(i::Serializer::kNumberOfSpaces, space); |
-} |
- |
-void CalculateFirstPageSizes(const SnapshotData* startup_snapshot, |
- const List<SnapshotData*>* context_snapshots, |
- uint32_t* sizes_out) { |
+void ProfileDeserialization(const SnapshotData* startup_snapshot, |
+ const List<SnapshotData*>* context_snapshots) { |
if (FLAG_profile_deserialization) { |
int startup_total = 0; |
PrintF("Deserialization will reserve:\n"); |
@@ -123,36 +93,6 @@ void CalculateFirstPageSizes(const SnapshotData* startup_snapshot, |
PrintF("%10d bytes per context #%d\n", context_total, i); |
} |
} |
- |
- uint32_t startup_requirements[i::Serializer::kNumberOfSpaces]; |
- uint32_t context_requirements[i::Serializer::kNumberOfSpaces]; |
- for (int space = 0; space < i::Serializer::kNumberOfSpaces; space++) { |
- startup_requirements[space] = 0; |
- context_requirements[space] = 0; |
- } |
- |
- UpdateMaxRequirementPerPage(startup_requirements, |
- startup_snapshot->Reservations()); |
- for (const auto& context_snapshot : *context_snapshots) { |
- UpdateMaxRequirementPerPage(context_requirements, |
- context_snapshot->Reservations()); |
- } |
- |
- for (int space = 0; space < i::Serializer::kNumberOfSpaces; space++) { |
- // If the space requirement for a page is less than a page size, we consider |
- // limiting the size of the first page in order to save memory on startup. |
- uint32_t required = startup_requirements[space] + |
- 2 * context_requirements[space] + |
- Page::kObjectStartOffset; |
- // Add a small allowance to the code space for small scripts. |
- if (space == CODE_SPACE) required += 32 * KB; |
- |
- if (space >= FIRST_PAGED_SPACE && space <= LAST_PAGED_SPACE) { |
- uint32_t max_size = |
- MemoryAllocator::PageAreaSize(static_cast<AllocationSpace>(space)); |
- sizes_out[space - FIRST_PAGED_SPACE] = std::min(required, max_size); |
- } |
- } |
} |
v8::StartupData Snapshot::CreateSnapshotBlob( |
@@ -166,13 +106,9 @@ v8::StartupData Snapshot::CreateSnapshotBlob( |
total_length += context_snapshot->RawData().length(); |
} |
- uint32_t first_page_sizes[kNumPagedSpaces]; |
- CalculateFirstPageSizes(startup_snapshot, context_snapshots, |
- first_page_sizes); |
+ ProfileDeserialization(startup_snapshot, context_snapshots); |
char* data = new char[total_length]; |
- memcpy(data + kFirstPageSizesOffset, first_page_sizes, |
- kNumPagedSpaces * kInt32Size); |
memcpy(data + kNumberOfContextsOffset, &num_contexts, kInt32Size); |
int payload_offset = StartupSnapshotOffset(num_contexts); |
int payload_length = startup_snapshot->RawData().length(); |