| OLD | NEW | 
|---|
| 1 // Copyright 2006-2008 the V8 project authors. All rights reserved. | 1 // Copyright 2006-2008 the V8 project authors. All rights reserved. | 
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be | 
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. | 
| 4 | 4 | 
| 5 // The common functionality when building with or without snapshots. | 5 // The common functionality when building with or without snapshots. | 
| 6 | 6 | 
| 7 #include "src/v8.h" | 7 #include "src/v8.h" | 
| 8 | 8 | 
| 9 #include "src/api.h" | 9 #include "src/api.h" | 
| 10 #include "src/base/platform/platform.h" | 10 #include "src/base/platform/platform.h" | 
| (...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 91 void CalculateFirstPageSizes(bool is_default_snapshot, | 91 void CalculateFirstPageSizes(bool is_default_snapshot, | 
| 92                              const SnapshotData& startup_snapshot, | 92                              const SnapshotData& startup_snapshot, | 
| 93                              const SnapshotData& context_snapshot, | 93                              const SnapshotData& context_snapshot, | 
| 94                              uint32_t* sizes_out) { | 94                              uint32_t* sizes_out) { | 
| 95   Vector<const SerializedData::Reservation> startup_reservations = | 95   Vector<const SerializedData::Reservation> startup_reservations = | 
| 96       startup_snapshot.Reservations(); | 96       startup_snapshot.Reservations(); | 
| 97   Vector<const SerializedData::Reservation> context_reservations = | 97   Vector<const SerializedData::Reservation> context_reservations = | 
| 98       context_snapshot.Reservations(); | 98       context_snapshot.Reservations(); | 
| 99   int startup_index = 0; | 99   int startup_index = 0; | 
| 100   int context_index = 0; | 100   int context_index = 0; | 
|  | 101 | 
|  | 102   if (FLAG_profile_deserialization) { | 
|  | 103     int startup_total = 0; | 
|  | 104     int context_total = 0; | 
|  | 105     for (auto& reservation : startup_reservations) { | 
|  | 106       startup_total += reservation.chunk_size(); | 
|  | 107     } | 
|  | 108     for (auto& reservation : context_reservations) { | 
|  | 109       context_total += reservation.chunk_size(); | 
|  | 110     } | 
|  | 111     PrintF( | 
|  | 112         "Deserialization will reserve:\n" | 
|  | 113         "%*d bytes for startup\n" | 
|  | 114         "%*d bytes per context\n", | 
|  | 115         10, startup_total, 10, context_total); | 
|  | 116   } | 
|  | 117 | 
| 101   for (int space = 0; space < i::Serializer::kNumberOfSpaces; space++) { | 118   for (int space = 0; space < i::Serializer::kNumberOfSpaces; space++) { | 
| 102     bool single_chunk = true; | 119     bool single_chunk = true; | 
| 103     while (!startup_reservations[startup_index].is_last()) { | 120     while (!startup_reservations[startup_index].is_last()) { | 
| 104       single_chunk = false; | 121       single_chunk = false; | 
| 105       startup_index++; | 122       startup_index++; | 
| 106     } | 123     } | 
| 107     while (!context_reservations[context_index].is_last()) { | 124     while (!context_reservations[context_index].is_last()) { | 
| 108       single_chunk = false; | 125       single_chunk = false; | 
| 109       context_index++; | 126       context_index++; | 
| 110     } | 127     } | 
| (...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 159   int length = context_offset + context_length; | 176   int length = context_offset + context_length; | 
| 160   char* data = new char[length]; | 177   char* data = new char[length]; | 
| 161 | 178 | 
| 162   memcpy(data + kMetadataOffset, &metadata.RawValue(), kInt32Size); | 179   memcpy(data + kMetadataOffset, &metadata.RawValue(), kInt32Size); | 
| 163   memcpy(data + kFirstPageSizesOffset, first_page_sizes, | 180   memcpy(data + kFirstPageSizesOffset, first_page_sizes, | 
| 164          kNumPagedSpaces * kInt32Size); | 181          kNumPagedSpaces * kInt32Size); | 
| 165   memcpy(data + kStartupLengthOffset, &startup_length, kInt32Size); | 182   memcpy(data + kStartupLengthOffset, &startup_length, kInt32Size); | 
| 166   memcpy(data + kStartupDataOffset, startup_data.begin(), startup_length); | 183   memcpy(data + kStartupDataOffset, startup_data.begin(), startup_length); | 
| 167   memcpy(data + context_offset, context_data.begin(), context_length); | 184   memcpy(data + context_offset, context_data.begin(), context_length); | 
| 168   v8::StartupData result = {data, length}; | 185   v8::StartupData result = {data, length}; | 
|  | 186 | 
|  | 187   if (FLAG_profile_deserialization) { | 
|  | 188     PrintF( | 
|  | 189         "Snapshot blob consists of:\n" | 
|  | 190         "%*d bytes for startup\n" | 
|  | 191         "%*d bytes for context\n", | 
|  | 192         10, startup_length, 10, context_length); | 
|  | 193   } | 
| 169   return result; | 194   return result; | 
| 170 } | 195 } | 
| 171 | 196 | 
| 172 | 197 | 
| 173 Snapshot::Metadata Snapshot::ExtractMetadata(const v8::StartupData* data) { | 198 Snapshot::Metadata Snapshot::ExtractMetadata(const v8::StartupData* data) { | 
| 174   uint32_t raw; | 199   uint32_t raw; | 
| 175   memcpy(&raw, data->data + kMetadataOffset, kInt32Size); | 200   memcpy(&raw, data->data + kMetadataOffset, kInt32Size); | 
| 176   return Metadata(raw); | 201   return Metadata(raw); | 
| 177 } | 202 } | 
| 178 | 203 | 
| (...skipping 14 matching lines...) Expand all  Loading... | 
| 193   int startup_length; | 218   int startup_length; | 
| 194   memcpy(&startup_length, data->data + kStartupLengthOffset, kIntSize); | 219   memcpy(&startup_length, data->data + kStartupLengthOffset, kIntSize); | 
| 195   int context_offset = ContextOffset(startup_length); | 220   int context_offset = ContextOffset(startup_length); | 
| 196   const byte* context_data = | 221   const byte* context_data = | 
| 197       reinterpret_cast<const byte*>(data->data + context_offset); | 222       reinterpret_cast<const byte*>(data->data + context_offset); | 
| 198   DCHECK_LT(context_offset, data->raw_size); | 223   DCHECK_LT(context_offset, data->raw_size); | 
| 199   int context_length = data->raw_size - context_offset; | 224   int context_length = data->raw_size - context_offset; | 
| 200   return Vector<const byte>(context_data, context_length); | 225   return Vector<const byte>(context_data, context_length); | 
| 201 } | 226 } | 
| 202 } }  // namespace v8::internal | 227 } }  // namespace v8::internal | 
| OLD | NEW | 
|---|