| OLD | NEW |
| 1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 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_SERIALIZE_H_ | 5 #ifndef V8_SNAPSHOT_SERIALIZE_H_ |
| 6 #define V8_SNAPSHOT_SERIALIZE_H_ | 6 #define V8_SNAPSHOT_SERIALIZE_H_ |
| 7 | 7 |
| 8 #include "src/hashmap.h" | 8 #include "src/hashmap.h" |
| 9 #include "src/heap-profiler.h" | 9 #include "src/heap-profiler.h" |
| 10 #include "src/isolate.h" | 10 #include "src/isolate.h" |
| (...skipping 554 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 565 // space id is used for the write barrier. The object_address is the address | 565 // space id is used for the write barrier. The object_address is the address |
| 566 // of the object we are writing into, or NULL if we are not writing into an | 566 // of the object we are writing into, or NULL if we are not writing into an |
| 567 // object, i.e. if we are writing a series of tagged values that are not on | 567 // object, i.e. if we are writing a series of tagged values that are not on |
| 568 // the heap. Return false if the object content has been deferred. | 568 // the heap. Return false if the object content has been deferred. |
| 569 bool ReadData(Object** start, Object** end, int space, | 569 bool ReadData(Object** start, Object** end, int space, |
| 570 Address object_address); | 570 Address object_address); |
| 571 void ReadObject(int space_number, Object** write_back); | 571 void ReadObject(int space_number, Object** write_back); |
| 572 Address Allocate(int space_index, int size); | 572 Address Allocate(int space_index, int size); |
| 573 | 573 |
| 574 // Special handling for serialized code like hooking up internalized strings. | 574 // Special handling for serialized code like hooking up internalized strings. |
| 575 HeapObject* PostProcessNewObject(HeapObject* obj); | 575 HeapObject* PostProcessNewObject(HeapObject* obj, int space); |
| 576 | |
| 577 void RelinkAllocationSite(AllocationSite* obj); | |
| 578 | 576 |
| 579 // This returns the address of an object that has been described in the | 577 // This returns the address of an object that has been described in the |
| 580 // snapshot by chunk index and offset. | 578 // snapshot by chunk index and offset. |
| 581 HeapObject* GetBackReferencedObject(int space); | 579 HeapObject* GetBackReferencedObject(int space); |
| 582 | 580 |
| 583 // Cached current isolate. | 581 // Cached current isolate. |
| 584 Isolate* isolate_; | 582 Isolate* isolate_; |
| 585 | 583 |
| 586 // Objects from the attached object descriptions in the serialized user code. | 584 // Objects from the attached object descriptions in the serialized user code. |
| 587 Vector<Handle<Object> > attached_objects_; | 585 Vector<Handle<Object> > attached_objects_; |
| 588 | 586 |
| 589 SnapshotByteSource source_; | 587 SnapshotByteSource source_; |
| 590 uint32_t magic_number_; | 588 uint32_t magic_number_; |
| 591 | 589 |
| 592 // The address of the next object that will be allocated in each space. | 590 // The address of the next object that will be allocated in each space. |
| 593 // Each space has a number of chunks reserved by the GC, with each chunk | 591 // Each space has a number of chunks reserved by the GC, with each chunk |
| 594 // fitting into a page. Deserialized objects are allocated into the | 592 // fitting into a page. Deserialized objects are allocated into the |
| 595 // current chunk of the target space by bumping up high water mark. | 593 // current chunk of the target space by bumping up high water mark. |
| 596 Heap::Reservation reservations_[kNumberOfSpaces]; | 594 Heap::Reservation reservations_[kNumberOfSpaces]; |
| 597 uint32_t current_chunk_[kNumberOfPreallocatedSpaces]; | 595 uint32_t current_chunk_[kNumberOfPreallocatedSpaces]; |
| 598 Address high_water_[kNumberOfPreallocatedSpaces]; | 596 Address high_water_[kNumberOfPreallocatedSpaces]; |
| 599 | 597 |
| 600 ExternalReferenceTable* external_reference_table_; | 598 ExternalReferenceTable* external_reference_table_; |
| 601 | 599 |
| 602 List<HeapObject*> deserialized_large_objects_; | 600 List<HeapObject*> deserialized_large_objects_; |
| 601 List<Code*> new_code_objects_; |
| 603 | 602 |
| 604 bool deserializing_user_code_; | 603 bool deserializing_user_code_; |
| 605 | 604 |
| 606 DISALLOW_COPY_AND_ASSIGN(Deserializer); | 605 DISALLOW_COPY_AND_ASSIGN(Deserializer); |
| 607 }; | 606 }; |
| 608 | 607 |
| 609 | 608 |
| 610 class CodeAddressMap; | 609 class CodeAddressMap; |
| 611 | 610 |
| 612 // There can be only one serializer per V8 process. | 611 // There can be only one serializer per V8 process. |
| (...skipping 418 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1031 kNumInternalizedStringsOffset + kInt32Size; | 1030 kNumInternalizedStringsOffset + kInt32Size; |
| 1032 static const int kNumCodeStubKeysOffset = kNumReservationsOffset + kInt32Size; | 1031 static const int kNumCodeStubKeysOffset = kNumReservationsOffset + kInt32Size; |
| 1033 static const int kPayloadLengthOffset = kNumCodeStubKeysOffset + kInt32Size; | 1032 static const int kPayloadLengthOffset = kNumCodeStubKeysOffset + kInt32Size; |
| 1034 static const int kChecksum1Offset = kPayloadLengthOffset + kInt32Size; | 1033 static const int kChecksum1Offset = kPayloadLengthOffset + kInt32Size; |
| 1035 static const int kChecksum2Offset = kChecksum1Offset + kInt32Size; | 1034 static const int kChecksum2Offset = kChecksum1Offset + kInt32Size; |
| 1036 static const int kHeaderSize = kChecksum2Offset + kInt32Size; | 1035 static const int kHeaderSize = kChecksum2Offset + kInt32Size; |
| 1037 }; | 1036 }; |
| 1038 } } // namespace v8::internal | 1037 } } // namespace v8::internal |
| 1039 | 1038 |
| 1040 #endif // V8_SNAPSHOT_SERIALIZE_H_ | 1039 #endif // V8_SNAPSHOT_SERIALIZE_H_ |
| OLD | NEW |