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 10namespace v8 { 11namespace internal { 12 13class SerializedCodeData; 14class SharedFunctionInfo; 15 16// Deserializes the object graph rooted at a given object. 17class ObjectDeserializer final : public Deserializer<Isolate> { 18 public: 19 static MaybeHandle<SharedFunctionInfo> DeserializeSharedFunctionInfo( 20 Isolate* isolate, const SerializedCodeData* data, Handle<String> source); 21 22 private: 23 explicit ObjectDeserializer(Isolate* isolate, const SerializedCodeData* data); 24 25 // Deserialize an object graph. Fail gracefully. 26 MaybeHandle<HeapObject> Deserialize(); 27 28 void LinkAllocationSites(); 29 void CommitPostProcessedObjects(); 30}; 31 32// Deserializes the object graph rooted at a given object. 33class OffThreadObjectDeserializer final : public Deserializer<LocalIsolate> { 34 public: 35 static MaybeHandle<SharedFunctionInfo> DeserializeSharedFunctionInfo( 36 LocalIsolate* isolate, const SerializedCodeData* data, 37 std::vector<Handle<Script>>* deserialized_scripts); 38 39 private: 40 explicit OffThreadObjectDeserializer(LocalIsolate* isolate, 41 const SerializedCodeData* data); 42 43 // Deserialize an object graph. Fail gracefully. 44 MaybeHandle<HeapObject> Deserialize( 45 std::vector<Handle<Script>>* deserialized_scripts); 46}; 47 48} // namespace internal 49} // namespace v8 50 51#endif // V8_SNAPSHOT_OBJECT_DESERIALIZER_H_ 52