| Index: src/serialize.h
|
| diff --git a/src/serialize.h b/src/serialize.h
|
| index 958f20e24f3d45e84e939c4cf2aea7200dc7e212..e90e4eb89ae594a2ad09b969d7a95e497ce9a2ff 100644
|
| --- a/src/serialize.h
|
| +++ b/src/serialize.h
|
| @@ -60,7 +60,7 @@ class ExternalReferenceTable {
|
|
|
| private:
|
| explicit ExternalReferenceTable(Isolate* isolate) : refs_(64) {
|
| - PopulateTable(isolate);
|
| + PopulateTable(isolate);
|
| }
|
|
|
| struct ExternalReferenceEntry {
|
| @@ -447,16 +447,7 @@ class Serializer : public SerializerDeserializer {
|
| }
|
|
|
| Isolate* isolate() const { return isolate_; }
|
| - static void RequestEnable(Isolate* isolate);
|
| - static void InitializeOncePerProcess();
|
| - static void TearDown();
|
| -
|
| - static bool enabled(Isolate* isolate) {
|
| - SerializationState state = static_cast<SerializationState>(
|
| - NoBarrier_Load(&serialization_state_));
|
| - ASSERT(state != SERIALIZER_STATE_UNINITIALIZED);
|
| - return state == SERIALIZER_STATE_ENABLED;
|
| - }
|
| +
|
| SerializationAddressMapper* address_mapper() { return &address_mapper_; }
|
| void PutRoot(int index,
|
| HeapObject* object,
|
| @@ -555,14 +546,6 @@ class Serializer : public SerializerDeserializer {
|
| SnapshotByteSink* sink_;
|
| ExternalReferenceEncoder* external_reference_encoder_;
|
|
|
| - enum SerializationState {
|
| - SERIALIZER_STATE_UNINITIALIZED = 0,
|
| - SERIALIZER_STATE_DISABLED = 1,
|
| - SERIALIZER_STATE_ENABLED = 2
|
| - };
|
| -
|
| - static AtomicWord serialization_state_;
|
| -
|
| SerializationAddressMapper address_mapper_;
|
| intptr_t root_index_wave_front_;
|
| void Pad();
|
| @@ -570,8 +553,12 @@ class Serializer : public SerializerDeserializer {
|
| friend class ObjectSerializer;
|
| friend class Deserializer;
|
|
|
| + // We may not need the code address map for logging for every instance
|
| + // of the serializer. Initialize it on demand.
|
| + void InitializeCodeAddressMap();
|
| +
|
| private:
|
| - static CodeAddressMap* code_address_map_;
|
| + CodeAddressMap* code_address_map_;
|
| DISALLOW_COPY_AND_ASSIGN(Serializer);
|
| };
|
|
|
| @@ -584,6 +571,7 @@ class PartialSerializer : public Serializer {
|
| : Serializer(isolate, sink),
|
| startup_serializer_(startup_snapshot_serializer) {
|
| set_root_index_wave_front(Heap::kStrongRootListLength);
|
| + InitializeCodeAddressMap();
|
| }
|
|
|
| // Serialize the objects reachable from a single object pointer.
|
| @@ -623,6 +611,7 @@ class StartupSerializer : public Serializer {
|
| // which will repopulate the cache with objects needed by that partial
|
| // snapshot.
|
| isolate->set_serialize_partial_snapshot_cache_length(0);
|
| + InitializeCodeAddressMap();
|
| }
|
| // Serialize the current state of the heap. The order is:
|
| // 1) Strong references.
|
|
|