Commit b1072142 authored by Jakob Gruber's avatar Jakob Gruber Committed by Commit Bot

[code-serializer] Handlify in CodeSerializer::Deserialize

This section potentially contains allocations and thus gc, all object
references should be handlified.

Bug: v8:9333
Change-Id: I5814e66e8b9b75a8bd952afecae7a3a27b42a642
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1647695
Auto-Submit: Jakob Gruber <jgruber@chromium.org>
Commit-Queue: Simon Zünd <szuend@chromium.org>
Reviewed-by: 's avatarSimon Zünd <szuend@chromium.org>
Cr-Commit-Position: refs/heads/master@{#62012}
parent ea04708e
...@@ -301,7 +301,7 @@ MaybeHandle<SharedFunctionInfo> CodeSerializer::Deserialize( ...@@ -301,7 +301,7 @@ MaybeHandle<SharedFunctionInfo> CodeSerializer::Deserialize(
PrintF("[Deserializing from %d bytes took %0.3f ms]\n", length, ms); PrintF("[Deserializing from %d bytes took %0.3f ms]\n", length, ms);
} }
bool log_code_creation = const bool log_code_creation =
isolate->logger()->is_listening_to_code_events() || isolate->logger()->is_listening_to_code_events() ||
isolate->is_profiling() || isolate->is_profiling() ||
isolate->code_event_dispatcher()->IsListeningToCodeEvents(); isolate->code_event_dispatcher()->IsListeningToCodeEvents();
...@@ -313,29 +313,31 @@ MaybeHandle<SharedFunctionInfo> CodeSerializer::Deserialize( ...@@ -313,29 +313,31 @@ MaybeHandle<SharedFunctionInfo> CodeSerializer::Deserialize(
#endif // V8_TARGET_ARCH_ARM #endif // V8_TARGET_ARCH_ARM
if (log_code_creation || FLAG_log_function_events) { if (log_code_creation || FLAG_log_function_events) {
String name = ReadOnlyRoots(isolate).empty_string(); Handle<Script> script(Script::cast(result->script()), isolate);
Script script = Script::cast(result->script()); Handle<String> name(script->name().IsString()
Handle<Script> script_handle(script, isolate); ? String::cast(script->name())
if (script.name().IsString()) name = String::cast(script.name()); : ReadOnlyRoots(isolate).empty_string(),
Handle<String> name_handle(name, isolate); isolate);
if (FLAG_log_function_events) { if (FLAG_log_function_events) {
LOG(isolate, FunctionEvent("deserialize", script.id(), LOG(isolate,
timer.Elapsed().InMillisecondsF(), FunctionEvent("deserialize", script->id(),
result->StartPosition(), result->EndPosition(), timer.Elapsed().InMillisecondsF(),
*name_handle)); result->StartPosition(), result->EndPosition(), *name));
} }
if (log_code_creation) { if (log_code_creation) {
Script::InitLineEnds(Handle<Script>(script, isolate)); Script::InitLineEnds(script);
DisallowHeapAllocation no_gc; DisallowHeapAllocation no_gc;
SharedFunctionInfo::ScriptIterator iter(isolate, script); SharedFunctionInfo::ScriptIterator iter(isolate, *script);
for (i::SharedFunctionInfo info = iter.Next(); !info.is_null(); for (i::SharedFunctionInfo info = iter.Next(); !info.is_null();
info = iter.Next()) { info = iter.Next()) {
if (info.is_compiled()) { if (info.is_compiled()) {
int line_num = script.GetLineNumber(info.StartPosition()) + 1; int line_num = script->GetLineNumber(info.StartPosition()) + 1;
int column_num = script.GetColumnNumber(info.StartPosition()) + 1; int column_num = script->GetColumnNumber(info.StartPosition()) + 1;
PROFILE(isolate, CodeCreateEvent(CodeEventListener::SCRIPT_TAG, PROFILE(isolate, CodeCreateEvent(CodeEventListener::SCRIPT_TAG,
info.abstract_code(), info, info.abstract_code(), info, *name,
*name_handle, line_num, column_num)); line_num, column_num));
} }
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment