1 // Copyright 2017 the V8 project authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef V8_SNAPSHOT_CONTEXT_DESERIALIZER_H_ 6 #define V8_SNAPSHOT_CONTEXT_DESERIALIZER_H_ 7 8 #include "src/snapshot/deserializer.h" 9 #include "src/snapshot/snapshot-data.h" 10 #include "src/snapshot/snapshot.h" 11 12 namespace v8 { 13 namespace internal { 14 15 class Context; 16 class Isolate; 17 18 // Deserializes the context-dependent object graph rooted at a given object. 19 // The ContextDeserializer is not expected to deserialize any code objects. 20 class V8_EXPORT_PRIVATE ContextDeserializer final 21 : public Deserializer<Isolate> { 22 public: 23 static MaybeHandle<Context> DeserializeContext( 24 Isolate* isolate, const SnapshotData* data, bool can_rehash, 25 Handle<JSGlobalProxy> global_proxy, 26 v8::DeserializeEmbedderFieldsCallback embedder_fields_deserializer); 27 28 private: ContextDeserializer(Isolate * isolate,const SnapshotData * data,bool can_rehash)29 explicit ContextDeserializer(Isolate* isolate, const SnapshotData* data, 30 bool can_rehash) 31 : Deserializer(isolate, data->Payload(), data->GetMagicNumber(), false, 32 can_rehash) {} 33 34 // Deserialize a single object and the objects reachable from it. 35 MaybeHandle<Object> Deserialize( 36 Isolate* isolate, Handle<JSGlobalProxy> global_proxy, 37 v8::DeserializeEmbedderFieldsCallback embedder_fields_deserializer); 38 39 void DeserializeEmbedderFields( 40 v8::DeserializeEmbedderFieldsCallback embedder_fields_deserializer); 41 42 void SetupOffHeapArrayBufferBackingStores(); 43 }; 44 45 } // namespace internal 46 } // namespace v8 47 48 #endif // V8_SNAPSHOT_CONTEXT_DESERIALIZER_H_ 49