control_flow_graph library

Library for creating and manipulating control flow graphs and SSA form.

Classes

AllocatedSSA
AssembleContext<T>
AssemblerConfig<C>
Configuration object passed to ControlFlowGraph.assembleToInstructions.
Assign
BasicBlock<T extends Operation>
A basic block is a sequence of operations that are always executed together. Only the last operation may perform control flow (e.g. a branch or jump).
BasicBlockBuilder
ControlFlowGraph
Represents a control flow graph operating on basic blocks of SSA operations.
Creator<T extends Operation, C>
ImmediateSSA
Instruction
Represents a machine code instruction
InstructionCreator<T extends Operation, C>
Noop
An operation type that does nothing.
Operation
Defines an SSA operation in a program's BasicBlock. The operation must specify which variables it reads from and writes to.
OpType
Represents the basic types of operations that can be performed in a program. These types are used for various optimizations and transformations.
ParallelCopy
PhiNode
A phi node operation in a program's BasicBlock. Phi nodes are used to resolve variable assignments in control flow graphs. Typically you should not create phi nodes directly, but use the ControlFlowGraph.insertPhiNodes method instead.
SSA
A static single assignment (SSA) form variable.
SwapOp
Swaps the physical register contents of two SSA variables in place. Both variables must share at least one RegisterGroup parent (i.e. belong to the same RegType) for a swap to be legal.
UnknownOp
Variant

Enums

ArithmeticOp
An operation type that represents arithmetic operations.
AssignmentOp
An operation type that represents assignment operations.
BitwiseOp
An operation type that represents bitwise operations.
CallOp
CollectionOp
ComparisonOp
An operation type that represents comparison operations.
LogicalOp
An operation type that represents logical operations.
UnaryOp
An operation type that represents unary operations.

Constants

dEdge → const int
A D-edge in the DJ-graph, representing a dominance relationship.
jEdge → const int
A J-edge in the DJ-graph, representing a non-dominance control flow relationship.

Typedefs

MoveCallback<C> = Instruction Function(AllocatedSSA target, AllocatedSSA source, AssembleContext<C> context)
Callback type for emitting a register-to-register move instruction.
ReloadCallback<C> = Instruction Function(AllocatedSSA variable, int slotIndex, AssembleContext<C> context)
Callback type for emitting a reload (load from local slot) instruction.
SpillCallback<C> = Instruction Function(AllocatedSSA variable, int slotIndex, AssembleContext<C> context)
Callback type for emitting a spill (store to local slot) instruction.
SwapCallback<C> = Instruction Function(AllocatedSSA a, AllocatedSSA b, AssembleContext<C> context)
Callback type for emitting a register swap instruction.