public class PiNodeManager extends 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.
ShimpleBody
,
Efficiently Computing Static Single Assignment Form and
the Control Dependence GraphModifier and Type | Field and Description |
---|---|
protected ShimpleBody |
body |
protected ReversibleGraph<Block> |
cfg |
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 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 final ShimpleBody body
protected final ShimpleFactory sf
protected final boolean trimmed
protected ReversibleGraph<Block> cfg
public PiNodeManager(ShimpleBody body, boolean trimmed, ShimpleFactory sf)
Copyright © 2021 Soot OSS. All rights reserved.