• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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