67 bool is_tracing_enabled =
false;
74 v8_flags.trace_maglev_graph_building ||
75 v8_flags.trace_maglev_escape_analysis ||
77 v8_flags.trace_maglev_object_tracking) {
81 ->PassesFilter(
v8_flags.maglev_print_filter);
85 if (is_tracing_enabled &&
88 v8_flags.trace_maglev_phi_untagging ||
96 if (
v8_flags.maglev_print_feedback) {
106 "V8.Maglev.GraphBuilding");
107 graph_builder.
Build();
109 if (is_tracing_enabled &&
v8_flags.print_maglev_graphs) {
110 std::cout <<
"\nAfter graph building" << std::endl;
111 PrintGraph(std::cout, compilation_info, graph);
118 verifier(compilation_info);
123 if (
v8_flags.maglev_non_eager_inlining) {
125 "V8.Maglev.Inlining");
128 inliner.
Run(is_tracing_enabled);
141 verifier(compilation_info);
148 "V8.Maglev.LoopOptimizations");
154 if (is_tracing_enabled &&
v8_flags.print_maglev_graphs) {
155 std::cout <<
"\nAfter loop optimizations" << std::endl;
156 PrintGraph(std::cout, compilation_info, graph);
163 verifier(compilation_info);
168 if (
v8_flags.maglev_untagged_phis) {
170 "V8.Maglev.PhiUntagging");
176 if (is_tracing_enabled &&
v8_flags.print_maglev_graphs) {
177 std::cout <<
"\nAfter Phi untagging" << std::endl;
178 PrintGraph(std::cout, compilation_info, graph);
186 verifier(compilation_info);
196 "V8.Maglev.DeadCodeMarking");
201 if (is_tracing_enabled &&
v8_flags.print_maglev_graphs) {
203 std::cout <<
"After use marking" << std::endl;
204 PrintGraph(std::cout, compilation_info, graph);
210 verifier(compilation_info);
225 "V8.Maglev.NodeProcessing");
233 processor.ProcessGraph(graph);
236 if (is_tracing_enabled &&
v8_flags.print_maglev_graphs) {
238 std::cout <<
"After register allocation pre-processing" << std::endl;
239 PrintGraph(std::cout, compilation_info, graph);
244 "V8.Maglev.RegisterAllocation");
249 if (is_tracing_enabled &&
252 std::cout <<
"After register allocation" << std::endl;
253 PrintGraph(std::cout, compilation_info, graph);
259 "V8.Maglev.CodeAssembly");
261 std::unique_ptr<MaglevCodeGenerator> code_generator =
262 std::make_unique<MaglevCodeGenerator>(local_isolate, compilation_info,
264 bool success = code_generator->Assemble();
270 compilation_info->set_code_generator(std::move(code_generator));
281 compilation_info->code_generator();
287 "V8.Maglev.CodeGeneration");
289 !code_generator->
Generate(isolate).ToHandle(&code)) {
293 ->set_maglev_compilation_failed(
true);
294 return {{}, BailoutReason::kCodeGenerationFailed};
300 "V8.Maglev.CommittingDependencies");
307 return {{}, BailoutReason::kBailedOutDueToDependencyChange};
313 std::unique_ptr<char[]> debug_name =
316 auto& os = tracing_scope.
stream();
317 code->CodePrint(os, debug_name.get());
323 return {
code, BailoutReason::kNoReason};