| 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();
|
|
|