public class PiNodeManager
extends java.lang.Object
The work is done in two main steps:
This class can also translate out of Shimple by producing an equivalent Jimple body with all Phi nodes removed.
Note that this is an internal class, understanding it should not be necessary from a user point-of-view and relying on it directly is not recommended.
Modifier and Type | Field and Description |
---|---|
protected ShimpleBody |
body |
protected ReversibleGraph<Block> |
cfg |
protected DominanceFrontier<Block> |
df |
protected DominatorTree<Block> |
dt |
protected ShimpleFactory |
sf |
protected boolean |
trimmed |
protected MultiMap<Local,Block> |
varToBlocks |
Constructor and Description |
---|
PiNodeManager(ShimpleBody body,
boolean trimmed,
ShimpleFactory sf)
Transforms the provided body to pure SSA form.
|
Modifier and Type | Method and Description |
---|---|
void |
eliminatePiNodes(boolean smart) |
static java.util.List<ValueBox> |
getUseBoxesFromBlock(Block block) |
void |
insertPiNodes(Local local,
Block frontierBlock) |
boolean |
insertTrivialPiNodes() |
void |
piHandleIfStmt(Local local,
IfStmt u) |
void |
piHandleSwitchStmt(Local local,
Unit u) |
void |
update() |
protected ShimpleBody body
protected ShimpleFactory sf
protected DominatorTree<Block> dt
protected DominanceFrontier<Block> df
protected ReversibleGraph<Block> cfg
protected boolean trimmed
public PiNodeManager(ShimpleBody body, boolean trimmed, ShimpleFactory sf)