Package soot.shimple.internal
Class PiNodeManager
- java.lang.Object
-
- soot.shimple.internal.PiNodeManager
-
public class PiNodeManager extends Object
This class does the real high-level work. It takes a Jimple body or Jimple/Shimple hybrid body and produces pure Shimple.The work is done in two main steps:
- Trivial Phi nodes are added.
- A renaming algorithm is executed.
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.
- Author:
- Navindra Umanee
- See Also:
ShimpleBody, Efficiently Computing Static Single Assignment Form and the Control Dependence Graph
-
-
Field Summary
Fields Modifier and Type Field Description protected ShimpleBodybodyprotected ReversibleGraph<Block>cfgprotected ShimpleFactorysfprotected booleantrimmedprotected MultiMap<Local,Block>varToBlocks
-
Constructor Summary
Constructors Constructor Description PiNodeManager(ShimpleBody body, boolean trimmed, ShimpleFactory sf)Transforms the provided body to pure SSA form.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description voideliminatePiNodes(boolean smart)static List<ValueBox>getUseBoxesFromBlock(Block block)voidinsertPiNodes(Local local, Block frontierBlock)booleaninsertTrivialPiNodes()voidpiHandleIfStmt(Local local, IfStmt u)voidpiHandleSwitchStmt(Local local, Unit u)voidupdate()
-
-
-
Field Detail
-
body
protected final ShimpleBody body
-
sf
protected final ShimpleFactory sf
-
trimmed
protected final boolean trimmed
-
cfg
protected ReversibleGraph<Block> cfg
-
-
Constructor Detail
-
PiNodeManager
public PiNodeManager(ShimpleBody body, boolean trimmed, ShimpleFactory sf)
Transforms the provided body to pure SSA form.
-
-