Line data Source code
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_OBJECT_DESERIALIZER_H_
6 : #define V8_SNAPSHOT_OBJECT_DESERIALIZER_H_
7 :
8 : #include "src/snapshot/deserializer.h"
9 :
10 : namespace v8 {
11 : namespace internal {
12 :
13 : class SerializedCodeData;
14 : class SharedFunctionInfo;
15 : class WasmCompiledModule;
16 :
17 : // Deserializes the object graph rooted at a given object.
18 300 : class ObjectDeserializer final : public Deserializer<> {
19 : public:
20 : static MaybeHandle<SharedFunctionInfo> DeserializeSharedFunctionInfo(
21 : Isolate* isolate, const SerializedCodeData* data, Handle<String> source);
22 :
23 : static MaybeHandle<WasmCompiledModule> DeserializeWasmCompiledModule(
24 : Isolate* isolate, const SerializedCodeData* data,
25 : Vector<const byte> wire_bytes);
26 :
27 : private:
28 : explicit ObjectDeserializer(const SerializedCodeData* data)
29 300 : : Deserializer(data, true) {}
30 :
31 : // Deserialize an object graph. Fail gracefully.
32 : MaybeHandle<HeapObject> Deserialize(Isolate* isolate);
33 :
34 : void FlushICacheForNewCodeObjectsAndRecordEmbeddedObjects();
35 : void CommitPostProcessedObjects();
36 : };
37 :
38 : } // namespace internal
39 : } // namespace v8
40 :
41 : #endif // V8_SNAPSHOT_OBJECT_DESERIALIZER_H_
|