|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object soot.shimple.Shimple
public class Shimple
Contains the constructors for the components of the SSA Shimple grammar. Methods are available to construct Shimple from Jimple/Shimple, create Phi nodes, and converting back from Shimple to Jimple.
This should normally be used in conjunction with the constructor methods from soot.jimple.Jimple.
Miscellaneous utility functions are also available in this class.
Jimple
,
Efficiently
Computing Static Single Assignment Form and the Control Dependence
GraphField Summary | |
---|---|
static String |
IFALIAS
|
static String |
MAYMODIFY
|
static String |
PHASE
|
static String |
PHI
|
static String |
PI
|
Constructor Summary | |
---|---|
Shimple(Singletons.Global g)
|
Method Summary | |
---|---|
static Local |
getLhsLocal(Unit unit)
Returns the corresponding left Local if the unit is a Shimple node, null otherwise. |
static PhiExpr |
getPhiExpr(Unit unit)
Returns the corresponding PhiExpr if the unit is a Phi node, null otherwise. |
static PiExpr |
getPiExpr(Unit unit)
|
static boolean |
isPhiExpr(Value value)
Returns true if the value is a Phi expression, false otherwise. |
static boolean |
isPhiNode(Unit unit)
Returns true if the unit is a Phi node, false otherwise. |
static boolean |
isPiExpr(Value value)
|
static boolean |
isPiNode(Unit unit)
|
ShimpleBody |
newBody(Body b)
Returns a ShimpleBody constructed from b, using default phase options. |
ShimpleBody |
newBody(Body b,
Map options)
Returns a ShimpleBody constructed from b, using provided option Map. |
ShimpleBody |
newBody(SootMethod m)
Returns an empty ShimpleBody associated with method m, using default phase options. |
ShimpleBody |
newBody(SootMethod m,
Map options)
Returns an empty ShimpleBody associated with method m, using provided option map. |
JimpleBody |
newJimpleBody(ShimpleBody body)
Constructs a JimpleBody from a ShimpleBody. |
PhiExpr |
newPhiExpr(List<Value> args,
List<Unit> preds)
Create a PhiExpr with the provided list of Values (Locals or Constants) and the corresponding control flow predecessor Blocks. |
PhiExpr |
newPhiExpr(Local leftLocal,
List preds)
Create a trivial PhiExpr, where preds are an ordered list of the control predecessor Blocks of the Phi expression. |
PiExpr |
newPiExpr(Local local,
Unit predicate,
Object targetKey)
|
static void |
redirectPointers(Unit oldLocation,
Unit newLocation)
Redirects PhiExpr pointers to the given Unit to the new Unit. |
static void |
redirectToPreds(Body body,
Unit remove)
If you are removing a Unit from a Unit chain which contains PhiExpr's, you might want to call this utility function in order to update any PhiExpr pointers to the Unit to point to the Unit's predecessor(s). |
static Shimple |
v()
|
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
public static final String IFALIAS
public static final String MAYMODIFY
public static final String PHI
public static final String PI
public static final String PHASE
Constructor Detail |
---|
public Shimple(Singletons.Global g)
Method Detail |
---|
public static Shimple v()
public ShimpleBody newBody(SootMethod m)
public ShimpleBody newBody(SootMethod m, Map options)
public ShimpleBody newBody(Body b)
public ShimpleBody newBody(Body b, Map options)
public PhiExpr newPhiExpr(Local leftLocal, List preds)
public PiExpr newPiExpr(Local local, Unit predicate, Object targetKey)
public PhiExpr newPhiExpr(List<Value> args, List<Unit> preds)
public JimpleBody newJimpleBody(ShimpleBody body)
ShimpleOptions
public static boolean isPhiExpr(Value value)
public static boolean isPhiNode(Unit unit)
public static PhiExpr getPhiExpr(Unit unit)
public static boolean isPiExpr(Value value)
public static boolean isPiNode(Unit unit)
public static PiExpr getPiExpr(Unit unit)
public static Local getLhsLocal(Unit unit)
public static void redirectToPreds(Body body, Unit remove)
Normally you should not have to call this function directly, since patching is taken care of Shimple's internal implementation of PatchingChain.
public static void redirectPointers(Unit oldLocation, Unit newLocation)
Normally you should not have to call this function directly, since patching is taken care of Shimple's internal implementation of PatchingChain.
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |