|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object soot.tagkit.AbstractHost soot.Body soot.jimple.StmtBody soot.shimple.ShimpleBody
public class ShimpleBody
Implementation of the Body class for the SSA Shimple IR. This class provides methods for maintaining SSA form as well as eliminating SSA form.
ShimpleBodyBuilder
,
Efficiently
Computing Static Single Assignment Form and the Control Dependence
Graph,
Serialized FormField Summary | |
---|---|
protected boolean |
isExtendedSSA
|
protected boolean |
isSSA
Set isSSA boolean to indicate whether a ShimpleBody is still in SSA form or not. |
protected ShimpleOptions |
options
Holds our options map... |
protected ShimpleBodyBuilder |
sbb
|
Fields inherited from class soot.Body |
---|
localChain, method, trapChain, unitChain |
Method Summary | |
---|---|
Object |
clone()
Returns a copy of the current ShimpleBody. |
void |
eliminateNodes()
|
void |
eliminatePhiNodes()
Remove Phi nodes from body. |
void |
eliminatePiNodes()
|
ShimpleOptions |
getOptions()
Returns the Shimple options applicable to this body. |
boolean |
isExtendedSSA()
|
boolean |
isSSA()
Returns value of, optional, user-maintained SSA boolean. |
void |
makeUniqueLocalNames()
Make sure the locals in this body all have unique String names. |
void |
rebuild()
Recompute SSA form. |
void |
rebuild(boolean hasPhiNodes)
Rebuild SSA form. |
void |
setSSA(boolean isSSA)
Sets a flag that indicates whether ShimpleBody is still in SSA form after a transformation or not. |
JimpleBody |
toJimpleBody()
Returns an equivalent unbacked JimpleBody of the current Body by eliminating the Phi nodes. |
Methods inherited from class soot.Body |
---|
checkInit, getAllUnitBoxes, getDefBoxes, getLocalCount, getLocals, getMethod, getParameterLocal, getThisLocal, getTraps, getUnitBoxes, getUnits, getUseAndDefBoxes, getUseBoxes, importBodyContentsFrom, setMethod, toString, validate, validateLocals, validateTraps, validateUnitBoxes, validateUses, validateValueBoxes |
Methods inherited from class soot.tagkit.AbstractHost |
---|
addAllTagsOf, addTag, getTag, getTags, hasTag, removeAllTags, removeTag |
Methods inherited from class java.lang.Object |
---|
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
Field Detail |
---|
protected ShimpleOptions options
protected ShimpleBodyBuilder sbb
protected boolean isExtendedSSA
protected boolean isSSA
Method Detail |
---|
public void rebuild()
Note: assumes presence of Phi nodes in body that require elimination. If you *know* there are no Phi nodes present, you may prefer to use rebuild(false) in order to skip some transformations during the Phi elimination process.
public void rebuild(boolean hasPhiNodes)
If there are Phi nodes already present in the body, it is imperative that we specify this so that the algorithm can eliminate them before rebuilding SSA.
The eliminate Phi nodes stage is harmless, but if you *know* that no Phi nodes are present and you wish to avoid the transformations involved in eliminating Phi nodes, use rebuild(false).
public JimpleBody toJimpleBody()
Currently available option is "naive-phi-elimination", typically specified in the "shimple" phase (eg, -p shimple naive-phi-elimination) which skips the dead code elimination and register allocation phase before eliminating Phi nodes. This can be useful for understanding the effect of analyses.
Remember to setActiveBody() if necessary in your SootMethod.
eliminatePhiNodes()
public void eliminatePhiNodes()
Currently available option is "naive-phi-elimination", typically specified in the "shimple" phase (eg, -p shimple naive-phi-elimination) which skips the dead code elimination and register allocation phase before eliminating Phi nodes. This can be useful for understanding the effect of analyses.
toJimpleBody()
public void eliminatePiNodes()
public void eliminateNodes()
public Object clone()
clone
in class Body
public void setSSA(boolean isSSA)
public boolean isSSA()
setSSA(boolean)
public boolean isExtendedSSA()
public ShimpleOptions getOptions()
public void makeUniqueLocalNames()
LocalNameStandardizer
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |