summaryrefslogtreecommitdiff
path: root/deps/v8/src
diff options
context:
space:
mode:
authorMarcel Laverdet <marcel@laverdet.com>2018-07-29 10:37:56 -0600
committerMichaël Zasso <targos@protonmail.com>2018-09-04 14:47:09 +0200
commit0d3da39f575afba5ab6a5a34f4e88a798a66dc6d (patch)
tree37d8ec90aa2eba4fbde7f5077c545b66723ccc85 /deps/v8/src
parentbb3575242cc87f59882bbcefa253353313f5606b (diff)
downloadandroid-node-v8-0d3da39f575afba5ab6a5a34f4e88a798a66dc6d.tar.gz
android-node-v8-0d3da39f575afba5ab6a5a34f4e88a798a66dc6d.tar.bz2
android-node-v8-0d3da39f575afba5ab6a5a34f4e88a798a66dc6d.zip
deps: cherry-pick 22116dd from upstream V8
Refs: https://github.com/v8/v8/commit/22116dd6c884c026225e56dd8e442a660193e729 Original commit message: [snapshot] fix resetting function code. Unconditionally setting the JSFunction code to that of the SFI may skip initializing the feedback vector. R=leszeks@chromium.org Bug: v8:7857 Cq-Include-Trybots: luci.chromium.try:linux_chromium_rel_ng Change-Id: I65d4bf32493be4cade2eaf3d665d44f93e80f809 Reviewed-on: https://chromium-review.googlesource.com/1107618 Commit-Queue: Yang Guo <yangguo@chromium.org> Reviewed-by: Leszek Swirski <leszeks@chromium.org> Cr-Commit-Position: refs/heads/master@{#53881} PR-URL: https://github.com/nodejs/node/pull/21992 Reviewed-By: Tiancheng "Timothy" Gu <timothygu99@gmail.com> Reviewed-By: Michaël Zasso <targos@protonmail.com> Reviewed-By: Franziska Hinkelmann <franziska.hinkelmann@gmail.com> Reviewed-By: Gus Caplan <me@gus.host>
Diffstat (limited to 'deps/v8/src')
-rw-r--r--deps/v8/src/api.cc7
-rw-r--r--deps/v8/src/snapshot/partial-serializer.cc2
2 files changed, 6 insertions, 3 deletions
diff --git a/deps/v8/src/api.cc b/deps/v8/src/api.cc
index 50e88904af..5df3188ab6 100644
--- a/deps/v8/src/api.cc
+++ b/deps/v8/src/api.cc
@@ -766,8 +766,11 @@ StartupData SnapshotCreator::CreateBlob(
// Complete in-object slack tracking for all functions.
fun->CompleteInobjectSlackTrackingIfActive();
- // Also, clear out feedback vectors.
- fun->feedback_cell()->set_value(isolate->heap()->undefined_value());
+ // Also, clear out feedback vectors, or any optimized code.
+ if (fun->has_feedback_vector()) {
+ fun->feedback_cell()->set_value(isolate->heap()->undefined_value());
+ fun->set_code(isolate->builtins()->builtin(i::Builtins::kCompileLazy));
+ }
}
// Clear out re-compilable data from all shared function infos. Any
diff --git a/deps/v8/src/snapshot/partial-serializer.cc b/deps/v8/src/snapshot/partial-serializer.cc
index 8b4c9d8d92..5624ba9887 100644
--- a/deps/v8/src/snapshot/partial-serializer.cc
+++ b/deps/v8/src/snapshot/partial-serializer.cc
@@ -105,7 +105,7 @@ void PartialSerializer::SerializeObject(HeapObject* obj, HowToCode how_to_code,
// Unconditionally reset the JSFunction to its SFI's code, since we can't
// serialize optimized code anyway.
JSFunction* closure = JSFunction::cast(obj);
- closure->set_code(closure->shared()->GetCode());
+ if (closure->is_compiled()) closure->set_code(closure->shared()->GetCode());
}
CheckRehashability(obj);