diff options
author | Joyee Cheung <joyeec9h3@gmail.com> | 2019-04-26 19:28:16 +0800 |
---|---|---|
committer | Anna Henningsen <anna@addaleax.net> | 2019-04-29 01:27:52 +0200 |
commit | 377939eef847d2475768c0db0b3eb1a699f545f1 (patch) | |
tree | 3b93778016326553bfb560804ffecc888afa3700 /deps/v8/src/snapshot | |
parent | 2c7b5332d6be2e729a5699dab33481864e13d08e (diff) | |
download | android-node-v8-377939eef847d2475768c0db0b3eb1a699f545f1.tar.gz android-node-v8-377939eef847d2475768c0db0b3eb1a699f545f1.tar.bz2 android-node-v8-377939eef847d2475768c0db0b3eb1a699f545f1.zip |
deps: V8: cherry-pick 5d0cf6b
Original commit message:
[snapshot] Use Handle to track name in `CodeSerializer::Deserialize`
The `Script::InitLineEnds(Handle<Script>(script, isolate));` line
may lead to objects being moved around on the heap, so it’s necessary
to use a `Handle` to track that.
This was causing crashes in Node.js in Debug mode when using the
code cache in combination with the CPU profiler.
Refs: https://github.com/nodejs/node/issues/27307
Change-Id: I392b4c00c6ebad44753f87fcbf2e3278ea7799a6
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1575698
Reviewed-by: Jakob Gruber <jgruber@chromium.org>
Reviewed-by: Peter Marshall <petermarshall@chromium.org>
Commit-Queue: Peter Marshall <petermarshall@chromium.org>
Cr-Commit-Position: refs/heads/master@{#61036}
Refs: https://github.com/v8/v8/commit/5d0cf6bcd58aa63c86f2664c801538c4e731170b
PR-URL: https://github.com/nodejs/node/pull/27423
Fixes: https://github.com/nodejs/node/issues/27307
Reviewed-By: Michaël Zasso <targos@protonmail.com>
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Diffstat (limited to 'deps/v8/src/snapshot')
-rw-r--r-- | deps/v8/src/snapshot/code-serializer.cc | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/deps/v8/src/snapshot/code-serializer.cc b/deps/v8/src/snapshot/code-serializer.cc index df728fcfc9..f72446564f 100644 --- a/deps/v8/src/snapshot/code-serializer.cc +++ b/deps/v8/src/snapshot/code-serializer.cc @@ -258,11 +258,12 @@ MaybeHandle<SharedFunctionInfo> CodeSerializer::Deserialize( Script script = Script::cast(result->script()); Handle<Script> script_handle(script, isolate); if (script->name()->IsString()) name = String::cast(script->name()); + Handle<String> name_handle(name, isolate); if (FLAG_log_function_events) { - LOG(isolate, - FunctionEvent("deserialize", script->id(), - timer.Elapsed().InMillisecondsF(), - result->StartPosition(), result->EndPosition(), name)); + LOG(isolate, FunctionEvent("deserialize", script->id(), + timer.Elapsed().InMillisecondsF(), + result->StartPosition(), result->EndPosition(), + *name_handle)); } if (log_code_creation) { Script::InitLineEnds(Handle<Script>(script, isolate)); @@ -274,8 +275,8 @@ MaybeHandle<SharedFunctionInfo> CodeSerializer::Deserialize( int line_num = script->GetLineNumber(info->StartPosition()) + 1; int column_num = script->GetColumnNumber(info->StartPosition()) + 1; PROFILE(isolate, CodeCreateEvent(CodeEventListener::SCRIPT_TAG, - info->abstract_code(), info, name, - line_num, column_num)); + info->abstract_code(), info, + *name_handle, line_num, column_num)); } } } |