Modifier and Type | Field and Description |
---|---|
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 |
localChain, method, trapChain, unitChain
col, line, mTagList
Modifier and Type | Method and Description |
---|---|
java.lang.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.
|
checkInit, getAllUnitBoxes, getDefBoxes, getLocalCount, getLocals, getMethod, getModificationCount, getParameterLocal, getParameterLocals, getParameterRefs, getThisLocal, getTraps, getUnitBoxes, getUnits, getUseAndDefBoxes, getUseBoxes, importBodyContentsFrom, runValidation, setMethod, toString, validate, validate, validateLocals, validateTraps, validateUnitBoxes, validateUses, validateValueBoxes
addAllTagsOf, addTag, getJavaSourceStartColumnNumber, getJavaSourceStartLineNumber, getTag, getTags, hasTag, removeAllTags, removeTag
protected ShimpleOptions options
protected ShimpleBodyBuilder sbb
protected boolean isExtendedSSA
protected boolean isSSA
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 java.lang.Object clone()
public void setSSA(boolean isSSA)
public boolean isSSA()
setSSA(boolean)
public boolean isExtendedSSA()
public ShimpleOptions getOptions()
public void makeUniqueLocalNames()
LocalNameStandardizer