From 14bb905d18e0fbf16a17c8fa55d626b4ea9146fd Mon Sep 17 00:00:00 2001 From: Yang Guo Date: Wed, 30 May 2018 09:08:12 +0200 Subject: [PATCH] deps: V8: cherry-pick a440efb27f from upstream MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Original commit message: [api] do not require source string for producing code cache. The embedder should not need to keep track of the source string. R=jgruber@chromium.org Cq-Include-Trybots: luci.chromium.try:linux_chromium_rel_ng Change-Id: Ie27df755a22fbcae7b6e87a435419d2d8f545558 Reviewed-on: https://chromium-review.googlesource.com/1013482 Reviewed-by: Jakob Gruber Commit-Queue: Yang Guo Cr-Commit-Position: refs/heads/master@{#52614} PR-URL: https://github.com/nodejs/node/pull/21022 Reviewed-By: Ben Noordhuis Reviewed-By: Michaƫl Zasso Reviewed-By: Gus Caplan Reviewed-By: Tiancheng "Timothy" Gu --- common.gypi | 2 +- deps/v8/include/v8.h | 6 ++++++ deps/v8/src/api.cc | 16 ++++++++++++---- deps/v8/src/d8.cc | 4 ++-- deps/v8/src/snapshot/code-serializer.cc | 13 +++++++------ deps/v8/src/snapshot/code-serializer.h | 5 ++--- deps/v8/test/cctest/test-api.cc | 3 +-- deps/v8/test/cctest/test-serialize.cc | 11 +++++------ 8 files changed, 36 insertions(+), 24 deletions(-) diff --git a/common.gypi b/common.gypi index 641aa90b17c1d3..dbf49d11ce3279 100644 --- a/common.gypi +++ b/common.gypi @@ -27,7 +27,7 @@ # Reset this number to 0 on major V8 upgrades. # Increment by one for each non-official patch applied to deps/v8. - 'v8_embedder_string': '-node.7', + 'v8_embedder_string': '-node.8', # Enable disassembler for `--print-code` v8 options 'v8_enable_disassembler': 1, diff --git a/deps/v8/include/v8.h b/deps/v8/include/v8.h index dcee4eed4e8bc4..ab77238a77f97f 100644 --- a/deps/v8/include/v8.h +++ b/deps/v8/include/v8.h @@ -1578,6 +1578,9 @@ class V8_EXPORT ScriptCompiler { * This will return nullptr if the script cannot be serialized. The * CachedData returned by this function should be owned by the caller. */ + static CachedData* CreateCodeCache(Local unbound_script); + + // Deprecated. static CachedData* CreateCodeCache(Local unbound_script, Local source); @@ -1587,6 +1590,9 @@ class V8_EXPORT ScriptCompiler { * This will return nullptr if the script cannot be serialized. The * CachedData returned by this function should be owned by the caller. */ + static CachedData* CreateCodeCacheForFunction(Local function); + + // Deprecated. static CachedData* CreateCodeCacheForFunction(Local function, Local source); diff --git a/deps/v8/src/api.cc b/deps/v8/src/api.cc index 25506d3930868d..e9a5ec69ec4a71 100644 --- a/deps/v8/src/api.cc +++ b/deps/v8/src/api.cc @@ -2626,21 +2626,29 @@ uint32_t ScriptCompiler::CachedDataVersionTag() { ScriptCompiler::CachedData* ScriptCompiler::CreateCodeCache( Local unbound_script, Local source) { + return CreateCodeCache(unbound_script); +} + +ScriptCompiler::CachedData* ScriptCompiler::CreateCodeCache( + Local unbound_script) { i::Handle shared = i::Handle::cast( Utils::OpenHandle(*unbound_script)); - i::Handle source_str = Utils::OpenHandle(*source); DCHECK(shared->is_toplevel()); - return i::CodeSerializer::Serialize(shared, source_str); + return i::CodeSerializer::Serialize(shared); } ScriptCompiler::CachedData* ScriptCompiler::CreateCodeCacheForFunction( Local function, Local source) { + return CreateCodeCacheForFunction(function); +} + +ScriptCompiler::CachedData* ScriptCompiler::CreateCodeCacheForFunction( + Local function) { i::Handle shared( i::Handle::cast(Utils::OpenHandle(*function))->shared()); - i::Handle source_str = Utils::OpenHandle(*source); CHECK(shared->is_wrapped()); - return i::CodeSerializer::Serialize(shared, source_str); + return i::CodeSerializer::Serialize(shared); } MaybeLocal