diff options
Diffstat (limited to 'deps/v8/src/snapshot-common.cc')
-rw-r--r-- | deps/v8/src/snapshot-common.cc | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/deps/v8/src/snapshot-common.cc b/deps/v8/src/snapshot-common.cc index 1e81b8ece5..f1106e138d 100644 --- a/deps/v8/src/snapshot-common.cc +++ b/deps/v8/src/snapshot-common.cc @@ -59,4 +59,24 @@ bool Snapshot::Initialize(const char* snapshot_file) { return false; } + +Handle<Context> Snapshot::NewContextFromSnapshot() { + if (context_size_ == 0) { + return Handle<Context>(); + } + Heap::ReserveSpace(new_space_used_, + pointer_space_used_, + data_space_used_, + code_space_used_, + map_space_used_, + cell_space_used_, + large_space_used_); + SnapshotByteSource source(context_data_, context_size_); + Deserializer deserializer(&source); + Object* root; + deserializer.DeserializePartial(&root); + CHECK(root->IsContext()); + return Handle<Context>(Context::cast(root)); +} + } } // namespace v8::internal |