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 51 of file flow_graph.cc.
void dart::FlowGraph::AddExactnessGuard | ( | InstanceCallInstr * | call, |
intptr_t | receiver_cid | ||
) |
Definition at line 630 of file flow_graph.cc.
PhiInstr * dart::FlowGraph::AddPhi | ( | JoinEntryInstr * | join, |
Definition * | d1, | ||
Definition * | d2 | ||
) |
Definition at line 3159 of file flow_graph.cc.
void dart::FlowGraph::AddToGraphInitialDefinitions | ( | Definition * | defn | ) |
Definition at line 263 of file flow_graph.cc.
void dart::FlowGraph::AddToInitialDefinitions | ( | BlockEntryWithInitialDefs * | entry, |
Definition * | defn | ||
) |
Definition at line 268 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 317 of file flow_graph.cc.
Instruction * dart::FlowGraph::AppendTo | ( | Instruction * | prev, |
Instruction * | instr, | ||
Environment * | env, | ||
UseKind | use_kind | ||
) |
Definition at line 303 of file flow_graph.cc.
|
inline |
Definition at line 185 of file flow_graph.h.
bool dart::FlowGraph::Canonicalize | ( | ) |
Definition at line 2698 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 498 of file flow_graph.cc.
GrowableArray< BlockEntryInstr * > * dart::FlowGraph::CodegenBlockOrder | ( | ) |
Definition at line 175 of file flow_graph.cc.
const GrowableArray< BlockEntryInstr * > * dart::FlowGraph::CodegenBlockOrder | ( | ) | const |
Definition at line 180 of file flow_graph.cc.
void dart::FlowGraph::CompactSSA | ( | ZoneGrowableArray< Definition * > * | detached_defs = nullptr | ) |
Definition at line 3355 of file flow_graph.cc.
|
inlinestaticconstexpr |
Definition at line 587 of file flow_graph.h.
|
inline |
Definition at line 506 of file flow_graph.h.
|
static |
Definition at line 101 of file flow_graph.cc.
void dart::FlowGraph::ComputeDominators | ( | GrowableArray< BitVector * > * | dominance_frontier | ) |
Definition at line 978 of file flow_graph.cc.
|
static |
Definition at line 1207 of file flow_graph.cc.
void dart::FlowGraph::ComputeSSA | ( | ZoneGrowableArray< Definition * > * | inlining_parameters | ) |
Definition at line 929 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 552 of file flow_graph.h.
Definition * dart::FlowGraph::CreateCheckBound | ( | Definition * | length, |
Definition * | index, | ||
intptr_t | deopt_id | ||
) |
Definition at line 619 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 607 of file flow_graph.cc.
void dart::FlowGraph::CreateCommonConstants | ( | ) |
Definition at line 1146 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 351 of file flow_graph.cc.
void dart::FlowGraph::EliminateEnvironments | ( | ) |
Definition at line 2583 of file flow_graph.cc.
RedefinitionInstr * dart::FlowGraph::EnsureRedefinition | ( | Instruction * | prev, |
Definition * | original, | ||
CompileType | compile_type | ||
) |
Definition at line 1779 of file flow_graph.cc.
void dart::FlowGraph::EnsureSSATempIndex | ( | Definition * | defn, |
Definition * | replacement | ||
) |
Definition at line 95 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 2625 of file flow_graph.cc.
void dart::FlowGraph::ExtractNonInternalTypedDataPayloads | ( | ) |
Definition at line 2676 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 192 of file flow_graph.cc.
|
inline |
Definition at line 573 of file flow_graph.h.
ConstantInstr * dart::FlowGraph::GetExistingConstant | ( | const Object & | object, |
Representation | representation = kTagged |
||
) | const |
Definition at line 185 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 278 of file flow_graph.cc.
|
inline |
Definition at line 312 of file flow_graph.h.
void dart::FlowGraph::InsertMoveArguments | ( | ) |
Definition at line 3178 of file flow_graph.cc.
void dart::FlowGraph::InsertSpeculativeAfter | ( | Instruction * | prev, |
Instruction * | instr, | ||
Environment * | env, | ||
UseKind | use_kind | ||
) |
Definition at line 293 of file flow_graph.cc.
|
inline |
Definition at line 318 of file flow_graph.h.
intptr_t dart::FlowGraph::InstructionCount | ( | ) | const |
Definition at line 1898 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 210 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 483 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 564 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 394 of file flow_graph.cc.
JoinEntryInstr * dart::FlowGraph::NewDiamond | ( | Instruction * | instruction, |
Instruction * | inherit, | ||
ComparisonInstr * | compare, | ||
TargetEntryInstr ** | block_true, | ||
TargetEntryInstr ** | block_false | ||
) |
Definition at line 3090 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 3133 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 114 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 2760 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 3244 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 1812 of file flow_graph.cc.
|
static |
Definition at line 2874 of file flow_graph.cc.
void dart::FlowGraph::RenameUsesDominatedByRedefinitions | ( | ) |
Definition at line 2885 of file flow_graph.cc.
void dart::FlowGraph::ReplaceCurrentInstruction | ( | ForwardInstructionIterator * | iterator, |
Instruction * | current, | ||
Instruction * | replacement | ||
) |
Definition at line 146 of file flow_graph.cc.
|
inline |
Definition at line 444 of file flow_graph.h.
|
static |
Definition at line 130 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 2307 of file flow_graph.cc.
|
inline |
Definition at line 553 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 568 of file flow_graph.h.
|
inline |
Definition at line 265 of file flow_graph.h.
|
inline |
Definition at line 505 of file flow_graph.h.
|
inline |
Definition at line 512 of file flow_graph.h.
|
inline |
Definition at line 510 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 241 of file flow_graph.cc.
void dart::FlowGraph::TryOptimizePatterns | ( | ) |
Definition at line 2802 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 655 of file flow_graph.cc.
void dart::FlowGraph::WidenSmiToInt32 | ( | ) |
Definition at line 2575 of file flow_graph.cc.
|
inline |
Definition at line 261 of file flow_graph.h.
|
friend |
Definition at line 608 of file flow_graph.h.
|
friend |
Definition at line 611 of file flow_graph.h.
|
friend |
Definition at line 609 of file flow_graph.h.
|
friend |
Definition at line 610 of file flow_graph.h.
|
friend |
Definition at line 606 of file flow_graph.h.
|
friend |
Definition at line 605 of file flow_graph.h.
|
friend |
Definition at line 607 of file flow_graph.h.