From eb23b176d8c7122af6add5ee38f87044288d3d39 Mon Sep 17 00:00:00 2001 From: Joyee Cheung Date: Sat, 20 Apr 2019 17:18:34 +0800 Subject: src: enable context snapshot after running per-context scripts At build time, snapshot the context after running per-context scripts in the main instance, and in the final build, deserialize the context in the main instance. This provides a ~5% in the misc/startup benchmark when the instance is launched within a process that runs test/fixtures/semicolon.js. PR-URL: https://github.com/nodejs/node/pull/27321 Refs: https://github.com/nodejs/node/issues/17058 Reviewed-By: Anna Henningsen Reviewed-By: Refael Ackermann Reviewed-By: James M Snell Reviewed-By: Ben Noordhuis --- src/node_main_instance.cc | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'src/node_main_instance.cc') diff --git a/src/node_main_instance.cc b/src/node_main_instance.cc index 419fd76772..212c6bf5f4 100644 --- a/src/node_main_instance.cc +++ b/src/node_main_instance.cc @@ -171,9 +171,13 @@ std::unique_ptr NodeMainInstance::CreateMainEnvironment( isolate_->GetHeapProfiler()->StartTrackingHeapObjects(true); } - Local context = NewContext(isolate_); + Local context; if (deserialize_mode_) { + context = + Context::FromSnapshot(isolate_, kNodeContextIndex).ToLocalChecked(); SetIsolateUpForNode(isolate_, IsolateSettingCategories::kErrorHandlers); + } else { + context = NewContext(isolate_); } CHECK(!context.IsEmpty()); -- cgit v1.2.3