3443 {
3444 CollectRepresentations();
3445
3447
3448 NumberInstructions();
3449
3450
3451
3452 AllocateSpillSlotForSuspendState();
3453
3454 BuildLiveRanges();
3455
3456
3457 UpdateStackmapsForSuspendState();
3458
3461 THR_Print(
"-- [before ssa allocator] ranges [%s] ---------\n",
3462 function.ToFullyQualifiedCString());
3463 PrintLiveRanges();
3464 THR_Print(
"----------------------------------------------\n");
3465
3466 THR_Print(
"-- [before ssa allocator] ir [%s] -------------\n",
3467 function.ToFullyQualifiedCString());
3469#ifndef PRODUCT
3470 FlowGraphPrinter printer(flow_graph_, true);
3471 printer.PrintBlocks();
3472#endif
3473 }
3474 THR_Print(
"----------------------------------------------\n");
3475 }
3476
3478 unallocated_cpu_, cpu_regs_, blocked_cpu_registers_);
3479 AllocateUnallocatedRanges();
3480
3481
3482
3483
3484
3487 spill_slots_.
Clear();
3488 quad_spill_slots_.
Clear();
3489 untagged_spill_slots_.
Clear();
3490
3492 unallocated_fpu_, fpu_regs_, blocked_fpu_registers_);
3493 AllocateUnallocatedRanges();
3494
3495 GraphEntryInstr* entry = block_order_[0]->AsGraphEntry();
3496 ASSERT(entry !=
nullptr);
3498 entry->set_spill_slot_count(cpu_spill_slot_count_ + double_spill_slot_count +
3500
3501 RemoveFrameIfNotNeeded();
3502
3503 AllocateOutgoingArguments();
3504
3505 ResolveControlFlow();
3506
3507 ScheduleParallelMoves();
3508
3511
3512 THR_Print(
"-- [after ssa allocator] ranges [%s] ---------\n",
3513 function.ToFullyQualifiedCString());
3514 PrintLiveRanges();
3515 THR_Print(
"----------------------------------------------\n");
3516
3517 THR_Print(
"-- [after ssa allocator] ir [%s] -------------\n",
3518 function.ToFullyQualifiedCString());
3520#ifndef PRODUCT
3521 FlowGraphPrinter printer(flow_graph_, true);
3522 printer.PrintBlocks();
3523#endif
3524 }
3525 THR_Print(
"----------------------------------------------\n");
3526 }
3527}
static bool ShouldTrace()
static constexpr intptr_t kDoubleSpillFactor
GraphEntryInstr * graph_entry() const
intptr_t max_argument_slot_count() const
const Function & function() const
intptr_t fixed_slot_count() const
static constexpr T Maximum(T x, T y)
#define THR_Print(format,...)
constexpr bool FLAG_support_il_printer
Dart_NativeFunction function
const int kNumberOfFpuRegisters