summaryrefslogtreecommitdiff
path: root/deps/v8/src/snapshot-common.cc
diff options
context:
space:
mode:
Diffstat (limited to 'deps/v8/src/snapshot-common.cc')
-rw-r--r--deps/v8/src/snapshot-common.cc20
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