Flutter Engine
The Flutter Engine
|
#include <flow_graph.h>
Classes | |
struct | LogicalAnd |
Public Types | |
enum class | CompilationMode { kUnoptimized , kOptimized , kIntrinsic } |
enum class | ToCheck { kNoCheck , kCheckNull , kCheckCid } |
enum | UseKind { kEffect , kValue } |
Static Public Member Functions | |
static Representation | ParameterRepresentationAt (const Function &function, intptr_t index) |
static Representation | ReturnRepresentationOf (const Function &function) |
static bool | IsConstantRepresentable (const Object &value, Representation target_rep, bool tagged_value_must_be_smi) |
static void | RenameDominatedUses (Definition *def, Instruction *dom, Definition *other) |
static intptr_t | ComputeLocationsOfFixedParameters (Zone *zone, const Function &function, bool should_assign_stack_locations=false, compiler::ParameterInfoArray *parameter_info=nullptr) |
static intptr_t | ComputeArgumentsSizeInWords (const Function &function, intptr_t arguments_count) |
static constexpr CompilationMode | CompilationModeFrom (bool is_optimizing) |
Friends | |
class | FlowGraphCompiler |
class | FlowGraphChecker |
class | IfConverter |
class | BranchSimplifier |
class | ConstantPropagator |
class | DeadCodeElimination |
class | compiler::GraphIntrinsifier |
Definition at line 114 of file flow_graph.h.
|
strong |
Enumerator | |
---|---|
kUnoptimized | |
kOptimized | |
kIntrinsic |
Definition at line 116 of file flow_graph.h.
|
strong |
Enumerator | |
---|---|
kNoCheck | |
kCheckNull | |
kCheckCid |
Definition at line 252 of file flow_graph.h.
dart::FlowGraph::FlowGraph | ( | const ParsedFunction & | parsed_function, |
GraphEntryInstr * | graph_entry, | ||
intptr_t | max_block_id, | ||
PrologueInfo | prologue_info, | ||
CompilationMode | compilation_mode | ||
) |
Definition at line 46 of file flow_graph.cc.
void dart::FlowGraph::AddExactnessGuard | ( | InstanceCallInstr * | call, |
intptr_t | receiver_cid | ||
) |
Definition at line 627 of file flow_graph.cc.
PhiInstr * dart::FlowGraph::AddPhi | ( | JoinEntryInstr * | join, |
Definition * | d1, | ||
Definition * | d2 | ||
) |
Definition at line 2927 of file flow_graph.cc.
void dart::FlowGraph::AddToGraphInitialDefinitions | ( | Definition * | defn | ) |
Definition at line 258 of file flow_graph.cc.
void dart::FlowGraph::AddToInitialDefinitions | ( | BlockEntryWithInitialDefs * | entry, |
Definition * | defn | ||
) |
Definition at line 263 of file flow_graph.cc.
|
inline |
Definition at line 266 of file flow_graph.h.
|
inline |
Definition at line 274 of file flow_graph.h.
Instruction * dart::FlowGraph::AppendSpeculativeTo | ( | Instruction * | prev, |
Instruction * | instr, | ||
Environment * | env, | ||
UseKind | use_kind | ||
) |
Definition at line 312 of file flow_graph.cc.
Instruction * dart::FlowGraph::AppendTo | ( | Instruction * | prev, |
Instruction * | instr, | ||
Environment * | env, | ||
UseKind | use_kind | ||
) |
Definition at line 298 of file flow_graph.cc.
|
inline |
Definition at line 185 of file flow_graph.h.
bool dart::FlowGraph::Canonicalize | ( | ) |
Definition at line 2466 of file flow_graph.cc.
|
inline |
Definition at line 462 of file flow_graph.h.
FlowGraph::ToCheck dart::FlowGraph::CheckForInstanceCall | ( | InstanceCallInstr * | call, |
UntaggedFunction::Kind | kind | ||
) | const |
Definition at line 493 of file flow_graph.cc.
GrowableArray< BlockEntryInstr * > * dart::FlowGraph::CodegenBlockOrder | ( | ) |
Definition at line 170 of file flow_graph.cc.
const GrowableArray< BlockEntryInstr * > * dart::FlowGraph::CodegenBlockOrder | ( | ) | const |
Definition at line 175 of file flow_graph.cc.
void dart::FlowGraph::CompactSSA | ( | ZoneGrowableArray< Definition * > * | detached_defs = nullptr | ) |
Definition at line 3123 of file flow_graph.cc.
|
inlinestaticconstexpr |
Definition at line 585 of file flow_graph.h.
|
inline |
Definition at line 504 of file flow_graph.h.
|
static |
Definition at line 96 of file flow_graph.cc.
void dart::FlowGraph::ComputeDominators | ( | GrowableArray< BitVector * > * | dominance_frontier | ) |
Definition at line 975 of file flow_graph.cc.
|
static |
Definition at line 1204 of file flow_graph.cc.
void dart::FlowGraph::ComputeSSA | ( | ZoneGrowableArray< Definition * > * | inlining_parameters | ) |
Definition at line 926 of file flow_graph.cc.
|
inline |
Definition at line 272 of file flow_graph.h.
|
inline |
Definition at line 270 of file flow_graph.h.
|
inline |
Definition at line 395 of file flow_graph.h.
|
inline |
Definition at line 550 of file flow_graph.h.
Definition * dart::FlowGraph::CreateCheckBound | ( | Definition * | length, |
Definition * | index, | ||
intptr_t | deopt_id | ||
) |
Definition at line 616 of file flow_graph.cc.
Instruction * dart::FlowGraph::CreateCheckClass | ( | Definition * | to_check, |
const Cids & | cids, | ||
intptr_t | deopt_id, | ||
const InstructionSource & | source | ||
) |
Definition at line 604 of file flow_graph.cc.
void dart::FlowGraph::CreateCommonConstants | ( | ) |
Definition at line 1143 of file flow_graph.cc.
|
inline |
Definition at line 243 of file flow_graph.h.
|
inline |
Definition at line 177 of file flow_graph.h.
|
inline |
Definition at line 173 of file flow_graph.h.
|
inline |
Definition at line 408 of file flow_graph.h.
|
inline |
Definition at line 417 of file flow_graph.h.
void dart::FlowGraph::DiscoverBlocks | ( | ) |
Definition at line 346 of file flow_graph.cc.
void dart::FlowGraph::EliminateEnvironments | ( | ) |
Definition at line 2351 of file flow_graph.cc.
RedefinitionInstr * dart::FlowGraph::EnsureRedefinition | ( | Instruction * | prev, |
Definition * | original, | ||
CompileType | compile_type | ||
) |
Definition at line 1777 of file flow_graph.cc.
void dart::FlowGraph::EnsureSSATempIndex | ( | Definition * | defn, |
Definition * | replacement | ||
) |
Definition at line 90 of file flow_graph.cc.
|
inline |
Definition at line 189 of file flow_graph.h.
bool dart::FlowGraph::ExtractExternalUntaggedPayload | ( | Instruction * | instr, |
Value * | array, | ||
classid_t | cid | ||
) |
Definition at line 2393 of file flow_graph.cc.
void dart::FlowGraph::ExtractNonInternalTypedDataPayloads | ( | ) |
Definition at line 2444 of file flow_graph.cc.
|
inline |
Definition at line 130 of file flow_graph.h.
ConstantInstr * dart::FlowGraph::GetConstant | ( | const Object & | object, |
Representation | representation = kTagged |
||
) |
Definition at line 187 of file flow_graph.cc.
|
inline |
Definition at line 571 of file flow_graph.h.
ConstantInstr * dart::FlowGraph::GetExistingConstant | ( | const Object & | object, |
Representation | representation = kTagged |
||
) | const |
Definition at line 180 of file flow_graph.cc.
|
inline |
Definition at line 430 of file flow_graph.h.
|
inline |
Definition at line 268 of file flow_graph.h.
|
inline |
Definition at line 464 of file flow_graph.h.
void dart::FlowGraph::InsertAfter | ( | Instruction * | prev, |
Instruction * | instr, | ||
Environment * | env, | ||
UseKind | use_kind | ||
) |
Definition at line 273 of file flow_graph.cc.
|
inline |
Definition at line 312 of file flow_graph.h.
void dart::FlowGraph::InsertMoveArguments | ( | ) |
Definition at line 2946 of file flow_graph.cc.
void dart::FlowGraph::InsertSpeculativeAfter | ( | Instruction * | prev, |
Instruction * | instr, | ||
Environment * | env, | ||
UseKind | use_kind | ||
) |
Definition at line 288 of file flow_graph.cc.
|
inline |
Definition at line 318 of file flow_graph.h.
intptr_t dart::FlowGraph::InstructionCount | ( | ) | const |
Definition at line 1896 of file flow_graph.cc.
|
inline |
Definition at line 423 of file flow_graph.h.
|
inline |
Definition at line 404 of file flow_graph.h.
|
inline |
Definition at line 460 of file flow_graph.h.
|
static |
Definition at line 205 of file flow_graph.cc.
|
inline |
Definition at line 196 of file flow_graph.h.
|
inline |
Definition at line 165 of file flow_graph.h.
|
inline |
Definition at line 262 of file flow_graph.h.
bool dart::FlowGraph::IsReceiver | ( | Definition * | def | ) | const |
Definition at line 478 of file flow_graph.cc.
|
inline |
Definition at line 437 of file flow_graph.h.
|
inline |
Definition at line 452 of file flow_graph.h.
|
inline |
Definition at line 425 of file flow_graph.h.
|
inline |
Definition at line 562 of file flow_graph.h.
|
inline |
Definition at line 264 of file flow_graph.h.
|
inline |
Definition at line 248 of file flow_graph.h.
void dart::FlowGraph::MergeBlocks | ( | ) |
Definition at line 389 of file flow_graph.cc.
JoinEntryInstr * dart::FlowGraph::NewDiamond | ( | Instruction * | instruction, |
Instruction * | inherit, | ||
ComparisonInstr * | compare, | ||
TargetEntryInstr ** | block_true, | ||
TargetEntryInstr ** | block_false | ||
) |
Definition at line 2858 of file flow_graph.cc.
JoinEntryInstr * dart::FlowGraph::NewDiamond | ( | Instruction * | instruction, |
Instruction * | inherit, | ||
const LogicalAnd & | condition, | ||
TargetEntryInstr ** | block_true, | ||
TargetEntryInstr ** | block_false | ||
) |
Definition at line 2901 of file flow_graph.cc.
|
inline |
Definition at line 137 of file flow_graph.h.
|
inline |
Definition at line 161 of file flow_graph.h.
|
inline |
Definition at line 210 of file flow_graph.h.
|
inline |
Definition at line 149 of file flow_graph.h.
|
static |
Definition at line 109 of file flow_graph.cc.
|
inline |
Definition at line 129 of file flow_graph.h.
void dart::FlowGraph::PopulateWithICData | ( | const Function & | function | ) |
Definition at line 2528 of file flow_graph.cc.
|
inline |
Definition at line 204 of file flow_graph.h.
|
inline |
Definition at line 222 of file flow_graph.h.
|
inline |
Definition at line 203 of file flow_graph.h.
void dart::FlowGraph::Print | ( | const char * | phase = "unknown" | ) |
Definition at line 3012 of file flow_graph.cc.
|
inline |
Definition at line 427 of file flow_graph.h.
|
inline |
Definition at line 181 of file flow_graph.h.
void dart::FlowGraph::RemoveRedefinitions | ( | bool | keep_checks = false | ) |
Definition at line 1810 of file flow_graph.cc.
|
static |
Definition at line 2642 of file flow_graph.cc.
void dart::FlowGraph::RenameUsesDominatedByRedefinitions | ( | ) |
Definition at line 2653 of file flow_graph.cc.
void dart::FlowGraph::ReplaceCurrentInstruction | ( | ForwardInstructionIterator * | iterator, |
Instruction * | current, | ||
Instruction * | replacement | ||
) |
Definition at line 141 of file flow_graph.cc.
|
inline |
Definition at line 444 of file flow_graph.h.
|
static |
Definition at line 125 of file flow_graph.cc.
|
inline |
Definition at line 207 of file flow_graph.h.
|
inline |
Definition at line 219 of file flow_graph.h.
void dart::FlowGraph::SelectRepresentations | ( | ) |
Definition at line 2298 of file flow_graph.cc.
|
inline |
Definition at line 551 of file flow_graph.h.
|
inline |
Definition at line 244 of file flow_graph.h.
|
inline |
Definition at line 465 of file flow_graph.h.
|
inline |
Definition at line 455 of file flow_graph.h.
|
inline |
Definition at line 566 of file flow_graph.h.
|
inline |
Definition at line 265 of file flow_graph.h.
|
inline |
Definition at line 503 of file flow_graph.h.
|
inline |
Definition at line 510 of file flow_graph.h.
|
inline |
Definition at line 508 of file flow_graph.h.
|
inline |
Definition at line 171 of file flow_graph.h.
|
inline |
Definition at line 167 of file flow_graph.h.
|
inline |
Definition at line 260 of file flow_graph.h.
Definition * dart::FlowGraph::TryCreateConstantReplacementFor | ( | Definition * | op, |
const Object & | value | ||
) |
Definition at line 236 of file flow_graph.cc.
void dart::FlowGraph::TryOptimizePatterns | ( | ) |
Definition at line 2570 of file flow_graph.cc.
|
inline |
Definition at line 411 of file flow_graph.h.
|
inline |
Definition at line 143 of file flow_graph.h.
bool dart::FlowGraph::VerifyRedefinitions | ( | ) |
Definition at line 652 of file flow_graph.cc.
|
inline |
Definition at line 261 of file flow_graph.h.
|
friend |
Definition at line 606 of file flow_graph.h.
|
friend |
Definition at line 609 of file flow_graph.h.
|
friend |
Definition at line 607 of file flow_graph.h.
|
friend |
Definition at line 608 of file flow_graph.h.
|
friend |
Definition at line 604 of file flow_graph.h.
|
friend |
Definition at line 603 of file flow_graph.h.
|
friend |
Definition at line 605 of file flow_graph.h.