| Index: src/serialize.h
|
| diff --git a/src/serialize.h b/src/serialize.h
|
| index 1fc125bcd38188e1540dc532a223a2bea6c061d7..9e1d3d506866af581ec6aeca0ea3290cab0efd4d 100644
|
| --- a/src/serialize.h
|
| +++ b/src/serialize.h
|
| @@ -470,13 +470,16 @@ class Serializer : public SerializerDeserializer {
|
| }
|
|
|
| Isolate* isolate() const { return isolate_; }
|
| - static void Enable(Isolate* isolate);
|
| - static void Disable();
|
| -
|
| - // Call this when you have made use of the fact that there is no serialization
|
| - // going on.
|
| - static void TooLateToEnableNow() { too_late_to_enable_now_ = true; }
|
| - static bool enabled() { return serialization_enabled_; }
|
| + static void RequestEnable(Isolate* isolate);
|
| + static void InitializeOncePerProcess();
|
| + static void TearDown();
|
| +
|
| + static bool enabled() {
|
| + 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,
|
| @@ -574,9 +577,15 @@ class Serializer : public SerializerDeserializer {
|
| int fullness_[LAST_SPACE + 1];
|
| SnapshotByteSink* sink_;
|
| ExternalReferenceEncoder* external_reference_encoder_;
|
| - static bool serialization_enabled_;
|
| - // Did we already make use of the fact that serialization was not enabled?
|
| - static bool too_late_to_enable_now_;
|
| +
|
| + 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();
|
|
|