71 {
72 ASSERT(!parsed_function.function().HasOptionalParameters());
73 PrologueInfo prologue_info(-1, -1);
74
75 auto graph_entry =
77
78 intptr_t block_id = 1;
79 graph_entry->set_normal_entry(
82
83 FlowGraph* graph =
84 new FlowGraph(parsed_function, graph_entry, block_id, prologue_info,
86 compiler->set_intrinsic_flow_graph(*graph);
87
88 const Function&
function = parsed_function.function();
89
90 switch (
function.recognized_kind()) {
91#define EMIT_CASE(class_name, function_name, enum_name, fp) \
92 case MethodRecognizer::k##enum_name: \
93 if (!Build_##enum_name(graph)) return false; \
94 break;
95
97#undef EMIT_CASE
98 default:
99 return false;
100 }
101
105 FlowGraphPrinter printer(*graph);
106 printer.PrintBlocks();
107 }
108
109
110 graph->RemoveRedefinitions();
111
112
113
114 GrowableArray<BitVector*> dominance_frontier;
115 graph->ComputeDominators(&dominance_frontier);
116
117 CompilerPassState
state(parsed_function.thread(), graph,
118 nullptr);
120
124 FlowGraphPrinter printer(*graph);
125 printer.PrintBlocks();
126 }
128 return true;
129}
static void RunGraphIntrinsicPipeline(CompilerPassState *state)
static CompilerState & Current()
static constexpr intptr_t kNoOSRDeoptId
static bool ShouldPrint(const Function &function, uint8_t **compiler_pass_filter=nullptr)
#define THR_Print(format,...)
constexpr bool FLAG_support_il_printer
Dart_NativeFunction function
#define EMIT_CASE(class_name, function_name, enum_name, fp)
static void EmitCodeFor(FlowGraphCompiler *compiler, FlowGraph *graph)
static constexpr intptr_t kInvalidTryIndex
#define GRAPH_INTRINSICS_LIST(V)