Skip to content

Commit 5d0cf6b

Browse files
addaleaxCommit Bot
authored andcommitted
[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: nodejs/node#27307 Change-Id: I392b4c00c6ebad44753f87fcbf2e3278ea7799a6 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1575698 Reviewed-by: Jakob Gruber <[email protected]> Reviewed-by: Peter Marshall <[email protected]> Commit-Queue: Peter Marshall <[email protected]> Cr-Commit-Position: refs/heads/master@{#61036}
1 parent b422b17 commit 5d0cf6b

1 file changed

Lines changed: 7 additions & 6 deletions

File tree

src/snapshot/code-serializer.cc

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -319,11 +319,12 @@ MaybeHandle<SharedFunctionInfo> CodeSerializer::Deserialize(
319319
Script script = Script::cast(result->script());
320320
Handle<Script> script_handle(script, isolate);
321321
if (script->name()->IsString()) name = String::cast(script->name());
322+
Handle<String> name_handle(name, isolate);
322323
if (FLAG_log_function_events) {
323-
LOG(isolate,
324-
FunctionEvent("deserialize", script->id(),
325-
timer.Elapsed().InMillisecondsF(),
326-
result->StartPosition(), result->EndPosition(), name));
324+
LOG(isolate, FunctionEvent("deserialize", script->id(),
325+
timer.Elapsed().InMillisecondsF(),
326+
result->StartPosition(), result->EndPosition(),
327+
*name_handle));
327328
}
328329
if (log_code_creation) {
329330
Script::InitLineEnds(Handle<Script>(script, isolate));
@@ -335,8 +336,8 @@ MaybeHandle<SharedFunctionInfo> CodeSerializer::Deserialize(
335336
int line_num = script->GetLineNumber(info->StartPosition()) + 1;
336337
int column_num = script->GetColumnNumber(info->StartPosition()) + 1;
337338
PROFILE(isolate, CodeCreateEvent(CodeEventListener::SCRIPT_TAG,
338-
info->abstract_code(), info, name,
339-
line_num, column_num));
339+
info->abstract_code(), info,
340+
*name_handle, line_num, column_num));
340341
}
341342
}
342343
}

0 commit comments

Comments
 (0)