49 {
50 if (!FLAG_reorder_basic_blocks) {
51 return;
52 }
54 return;
55 }
56
57 const Function&
function = flow_graph->parsed_function().function();
58 const Array& ic_data_array =
60 if (ic_data_array.IsNull()) {
63 return;
64 }
66 edge_counters ^=
68 if (edge_counters.IsNull()) {
69 return;
70 }
71
72 auto graph_entry = flow_graph->graph_entry();
73 BlockEntryInstr* entry = graph_entry->normal_entry();
74 if (entry == nullptr) {
75 entry = graph_entry->osr_entry();
77 }
78 const intptr_t entry_count =
80 graph_entry->set_entry_count(entry_count);
81 if (entry_count == 0) {
82 return;
83 }
84
85 for (BlockIterator it = flow_graph->reverse_postorder_iterator(); !it.Done();
86 it.Advance()) {
87 BlockEntryInstr* block = it.Current();
88 Instruction* last = block->last_instruction();
89 for (intptr_t
i = 0;
i < last->SuccessorCount(); ++
i) {
90 BlockEntryInstr* succ = last->SuccessorAt(
i);
92 }
93 }
94}
#define DEBUG_ASSERT(cond)
static CompilerState & Current()
static IsolateGroup * Current()
Dart_NativeFunction function
static void SetEdgeWeight(BlockEntryInstr *block, BlockEntryInstr *successor, const Array &edge_counters, intptr_t entry_count)
static intptr_t GetEdgeCount(const Array &edge_counters, intptr_t edge_id)
static constexpr intptr_t kEdgeCounters