Commit 2b7d58d1 authored by Jakob Linke's avatar Jakob Linke Committed by V8 LUCI CQ

Minor improvements to opt/deopt tracing output

For the 'finish compilation' event for all tiers (SP, ML, TF),
consistently use the 'completed compiling' message prefix.

For deoptimization, print the Code object in addition to the JSFunction
(now that deopts may happen in both ML and TF).

Bug: v8:7700
Change-Id: I3375db91413195c92007db9b1b202af9bd6ac05a
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3904601
Auto-Submit: Jakob Linke <jgruber@chromium.org>
Reviewed-by: 's avatarLeszek Swirski <leszeks@chromium.org>
Commit-Queue: Leszek Swirski <leszeks@chromium.org>
Cr-Commit-Position: refs/heads/main@{#83303}
parent c439efda
...@@ -176,13 +176,14 @@ class CompilerTracer : public AllStatic { ...@@ -176,13 +176,14 @@ class CompilerTracer : public AllStatic {
function->DebugNameCStr().get(), osr_offset.ToInt(), ToString(mode)); function->DebugNameCStr().get(), osr_offset.ToInt(), ToString(mode));
} }
static void TraceCompilationStats(Isolate* isolate, static void TraceFinishTurbofanCompile(Isolate* isolate,
OptimizedCompilationInfo* info, OptimizedCompilationInfo* info,
double ms_creategraph, double ms_optimize, double ms_creategraph,
double ms_codegen) { double ms_optimize,
double ms_codegen) {
if (!v8_flags.trace_opt || !info->IsOptimizing()) return; if (!v8_flags.trace_opt || !info->IsOptimizing()) return;
CodeTracer::Scope scope(isolate->GetCodeTracer()); CodeTracer::Scope scope(isolate->GetCodeTracer());
PrintTracePrefix(scope, "optimizing", info); PrintTracePrefix(scope, "completed compiling", info);
if (info->is_osr()) PrintF(scope.file(), " OSR"); if (info->is_osr()) PrintF(scope.file(), " OSR");
PrintF(scope.file(), " - took %0.3f, %0.3f, %0.3f ms", ms_creategraph, PrintF(scope.file(), " - took %0.3f, %0.3f, %0.3f ms", ms_creategraph,
ms_optimize, ms_codegen); ms_optimize, ms_codegen);
...@@ -194,7 +195,7 @@ class CompilerTracer : public AllStatic { ...@@ -194,7 +195,7 @@ class CompilerTracer : public AllStatic {
double ms_timetaken) { double ms_timetaken) {
if (!v8_flags.trace_baseline) return; if (!v8_flags.trace_baseline) return;
CodeTracer::Scope scope(isolate->GetCodeTracer()); CodeTracer::Scope scope(isolate->GetCodeTracer());
PrintTracePrefix(scope, "compiling", shared, CodeKind::BASELINE); PrintTracePrefix(scope, "completed compiling", shared, CodeKind::BASELINE);
PrintF(scope.file(), " - took %0.3f ms", ms_timetaken); PrintF(scope.file(), " - took %0.3f ms", ms_timetaken);
PrintTraceSuffix(scope); PrintTraceSuffix(scope);
} }
...@@ -525,7 +526,7 @@ void TurbofanCompilationJob::RecordCompilationStats(ConcurrencyMode mode, ...@@ -525,7 +526,7 @@ void TurbofanCompilationJob::RecordCompilationStats(ConcurrencyMode mode,
double ms_creategraph = time_taken_to_prepare_.InMillisecondsF(); double ms_creategraph = time_taken_to_prepare_.InMillisecondsF();
double ms_optimize = time_taken_to_execute_.InMillisecondsF(); double ms_optimize = time_taken_to_execute_.InMillisecondsF();
double ms_codegen = time_taken_to_finalize_.InMillisecondsF(); double ms_codegen = time_taken_to_finalize_.InMillisecondsF();
CompilerTracer::TraceCompilationStats( CompilerTracer::TraceFinishTurbofanCompile(
isolate, compilation_info(), ms_creategraph, ms_optimize, ms_codegen); isolate, compilation_info(), ms_creategraph, ms_optimize, ms_codegen);
if (v8_flags.trace_opt_stats) { if (v8_flags.trace_opt_stats) {
static double compilation_time = 0.0; static double compilation_time = 0.0;
......
...@@ -678,9 +678,9 @@ void Deoptimizer::TraceDeoptBegin(int optimization_id, ...@@ -678,9 +678,9 @@ void Deoptimizer::TraceDeoptBegin(int optimization_id,
MessageFor(deopt_kind_), DeoptimizeReasonToString(info.deopt_reason)); MessageFor(deopt_kind_), DeoptimizeReasonToString(info.deopt_reason));
if (function_.IsJSFunction()) { if (function_.IsJSFunction()) {
function_.ShortPrint(file); function_.ShortPrint(file);
} else { PrintF(file, ", ");
PrintF(file, "%s", CodeKindToString(compiled_code_.kind()));
} }
compiled_code_.ShortPrint(file);
PrintF(file, PrintF(file,
", opt id %d, " ", opt id %d, "
#ifdef DEBUG #ifdef DEBUG
...@@ -721,8 +721,9 @@ void Deoptimizer::TraceMarkForDeoptimization(Code code, const char* reason) { ...@@ -721,8 +721,9 @@ void Deoptimizer::TraceMarkForDeoptimization(Code code, const char* reason) {
DeoptimizationData deopt_data = DeoptimizationData::cast(maybe_data); DeoptimizationData deopt_data = DeoptimizationData::cast(maybe_data);
CodeTracer::Scope scope(isolate->GetCodeTracer()); CodeTracer::Scope scope(isolate->GetCodeTracer());
if (FLAG_trace_deopt) { if (FLAG_trace_deopt) {
PrintF(scope.file(), "[marking dependent code " V8PRIxPTR_FMT " (", PrintF(scope.file(), "[marking dependent code ");
code.ptr()); code.ShortPrint(scope.file());
PrintF(scope.file(), " (");
deopt_data.SharedFunctionInfo().ShortPrint(scope.file()); deopt_data.SharedFunctionInfo().ShortPrint(scope.file());
PrintF(") (opt id %d) for deoptimization, reason: %s]\n", PrintF(") (opt id %d) for deoptimization, reason: %s]\n",
deopt_data.OptimizationId().value(), reason); deopt_data.OptimizationId().value(), reason);
......
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