OLD | NEW |
1 // Copyright 2016 the V8 project authors. All rights reserved. | 1 // Copyright 2016 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 #ifndef V8_SNAPSHOT_SERIALIZER_H_ | 5 #ifndef V8_SNAPSHOT_SERIALIZER_H_ |
6 #define V8_SNAPSHOT_SERIALIZER_H_ | 6 #define V8_SNAPSHOT_SERIALIZER_H_ |
7 | 7 |
8 #include "src/isolate.h" | 8 #include "src/isolate.h" |
9 #include "src/log.h" | 9 #include "src/log.h" |
10 #include "src/objects.h" | 10 #include "src/objects.h" |
(...skipping 172 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
183 if (skip != 0) { | 183 if (skip != 0) { |
184 sink_.Put(kSkip, "SkipFromSerializeObject"); | 184 sink_.Put(kSkip, "SkipFromSerializeObject"); |
185 sink_.PutInt(skip, "SkipDistanceFromSerializeObject"); | 185 sink_.PutInt(skip, "SkipDistanceFromSerializeObject"); |
186 } | 186 } |
187 } | 187 } |
188 | 188 |
189 bool BackReferenceIsAlreadyAllocated(SerializerReference back_reference); | 189 bool BackReferenceIsAlreadyAllocated(SerializerReference back_reference); |
190 | 190 |
191 // This will return the space for an object. | 191 // This will return the space for an object. |
192 SerializerReference AllocateLargeObject(int size); | 192 SerializerReference AllocateLargeObject(int size); |
| 193 SerializerReference AllocateMap(); |
193 SerializerReference Allocate(AllocationSpace space, int size); | 194 SerializerReference Allocate(AllocationSpace space, int size); |
194 int EncodeExternalReference(Address addr) { | 195 int EncodeExternalReference(Address addr) { |
195 return external_reference_encoder_.Encode(addr); | 196 return external_reference_encoder_.Encode(addr); |
196 } | 197 } |
197 | 198 |
198 bool HasNotExceededFirstPageOfEachSpace(); | 199 bool HasNotExceededFirstPageOfEachSpace(); |
199 | 200 |
200 // GetInt reads 4 bytes at once, requiring padding at the end. | 201 // GetInt reads 4 bytes at once, requiring padding at the end. |
201 void Pad(); | 202 void Pad(); |
202 | 203 |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
238 | 239 |
239 private: | 240 private: |
240 CodeAddressMap* code_address_map_; | 241 CodeAddressMap* code_address_map_; |
241 // Objects from the same space are put into chunks for bulk-allocation | 242 // Objects from the same space are put into chunks for bulk-allocation |
242 // when deserializing. We have to make sure that each chunk fits into a | 243 // when deserializing. We have to make sure that each chunk fits into a |
243 // page. So we track the chunk size in pending_chunk_ of a space, but | 244 // page. So we track the chunk size in pending_chunk_ of a space, but |
244 // when it exceeds a page, we complete the current chunk and start a new one. | 245 // when it exceeds a page, we complete the current chunk and start a new one. |
245 uint32_t pending_chunk_[kNumberOfPreallocatedSpaces]; | 246 uint32_t pending_chunk_[kNumberOfPreallocatedSpaces]; |
246 List<uint32_t> completed_chunks_[kNumberOfPreallocatedSpaces]; | 247 List<uint32_t> completed_chunks_[kNumberOfPreallocatedSpaces]; |
247 uint32_t max_chunk_size_[kNumberOfPreallocatedSpaces]; | 248 uint32_t max_chunk_size_[kNumberOfPreallocatedSpaces]; |
| 249 // Number of maps that we need to allocate. |
| 250 uint32_t num_maps_; |
248 | 251 |
249 // We map serialized large objects to indexes for back-referencing. | 252 // We map serialized large objects to indexes for back-referencing. |
250 uint32_t large_objects_total_size_; | 253 uint32_t large_objects_total_size_; |
251 uint32_t seen_large_objects_index_; | 254 uint32_t seen_large_objects_index_; |
252 | 255 |
253 List<byte> code_buffer_; | 256 List<byte> code_buffer_; |
254 | 257 |
255 // To handle stack overflow. | 258 // To handle stack overflow. |
256 List<HeapObject*> deferred_objects_; | 259 List<HeapObject*> deferred_objects_; |
257 | 260 |
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
320 SnapshotByteSink* sink_; | 323 SnapshotByteSink* sink_; |
321 int reference_representation_; | 324 int reference_representation_; |
322 int bytes_processed_so_far_; | 325 int bytes_processed_so_far_; |
323 bool code_has_been_output_; | 326 bool code_has_been_output_; |
324 }; | 327 }; |
325 | 328 |
326 } // namespace internal | 329 } // namespace internal |
327 } // namespace v8 | 330 } // namespace v8 |
328 | 331 |
329 #endif // V8_SNAPSHOT_SERIALIZER_H_ | 332 #endif // V8_SNAPSHOT_SERIALIZER_H_ |
OLD | NEW |