Package qilin.core.pag
Class PAG
java.lang.Object
qilin.core.pag.PAG
Pointer assignment graph.
- Author:
- Ondrej Lhotak
-
Field Summary
Modifier and TypeFieldDescriptionprotected ArrayNumberer<AllocNode>
protected final Map<AllocNode,
Map<Context, ContextAllocNode>> protected final Map<Context,
Map<SparkField, ContextField>> protected final Map<SootMethod,
Map<Context, ContextMethod>> protected final Map<VarNode,
Map<Context, ContextVarNode>> protected ChunkedQueue<Node>
protected ArrayNumberer<FieldRefNode>
protected final Set<FieldSignature>
protected final Map<FieldRefNode,
Set<VarNode>> protected final Map<VarNode,
Set<FieldRefNode>> protected final Set<Triple<SootMethod,
Local, Type>> protected final Map<SootMethod,
MethodPAG> protected final NativeMethodDriver
protected final PTA
protected final ReflectionModel
protected final Map<VarNode,
Set<FieldRefNode>> protected final Map<FieldRefNode,
Set<VarNode>> protected ArrayNumberer<ValNode>
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionfinal void
Adds an edge to the graph, returning false if it was already there.void
addGlobalPAGEdge
(Node from, Node to) protected <K,
V> boolean allocInvLookup
(VarNode key) allocLookup
(AllocNode key) protected ReflectionModel
findAllocNode
(Object obj) findContextVarNode
(SootMethod m, Local baseValue, Context context) Finds the ContextVarNode for base variable value and context context, or returns null.findGlobalVarNode
(Object value) Finds the GlobalVarNode for the variable value, or returns null.findLocalVarNode
(SootMethod m, Object value, Type type) Finds the LocalVarNode for the variable value, or returns null.findValNode
(Object value, SootMethod containingMethod) Finds the ValNode for the variable value, or returns null.getAlloc()
getAllocNode
(Object val) getCgb()
getLoad()
getPta()
getVarNodes
(SootMethod m, Local local) loadInvLookup
(VarNode key) loadLookup
(FieldRefNode key) protected <K,
V> Set<V> makeAllocNode
(Object newExpr, Type type, SootMethod m) makeContextAllocNode
(AllocNode allocNode, Context context) Finds or creates the ContextAllocNode for base alloc site and context.makeContextField
(Context context, FieldValNode fieldValNode) makeContextMethod
(Context context, SootMethod method) Finds or creates the ContextMethod for method and context.makeContextVarNode
(VarNode base, Context context) Finds or creates the ContextVarNode for base variable base and context.makeFieldRefNode
(VarNode base, SparkField field) Finds or creates the FieldRefNode for base variable base and field field, of type type.makeFieldValNode
(SparkField field) Finds or creates the FieldVarNode for the Java field or array element.makeGlobalVarNode
(Object value, Type type) Finds or creates the GlobalVarNode for the variable value, of type type.makeLocalVarNode
(Object value, Type type, SootMethod method) Finds or creates the LocalVarNode for the variable value, of type type.static int
void
void
setEdgeQueue
(ChunkedQueue<Node> edgeQueue) simpleInvLookup
(ValNode key) simpleLookup
(ValNode key) storeLookup
(VarNode key)
-
Field Details
-
nativeDriver
-
reflectionModel
-
contextVarNodeMap
-
contextAllocNodeMap
-
contextMethodMap
-
addedContexts
-
contextFieldMap
-
allocNodeNumberer
-
valNodeNumberer
-
fieldRefNodeNumberer
-
valToAllocNode
-
valToValNode
-
methodToPag
-
globals
-
locals
-
edgeQueue
-
simple
-
simpleInv
-
load
-
loadInv
-
alloc
-
allocInv
-
store
-
storeInv
-
pta
-
-
Constructor Details
-
PAG
-
-
Method Details
-
setEdgeQueue
-
getAlloc
-
getSimple
-
getSimpleInv
-
getLoad
-
getStoreInv
-
getPta
-
getCgb
-
edgeReader
-
addToMap
-
addGlobalPAGEdge
-
addEdge
Adds an edge to the graph, returning false if it was already there. -
lookup
-
allocLookup
-
allocInvLookup
-
simpleLookup
-
simpleInvLookup
-
loadInvLookup
-
loadLookup
-
storeLookup
-
storeInvLookup
-
nextFinishNumber
public static int nextFinishNumber() -
getAllocNodeNumberer
-
getFieldRefNodeNumberer
-
getValNodeNumberer
-
getValNodes
-
getAllocNodes
-
getGlobalPointers
-
getLocalPointers
-
findValNode
Finds the ValNode for the variable value, or returns null. -
findAllocNode
-
makeAllocNode
-
makeStringConstantNode
-
makeClassConstantNode
-
makeGlobalVarNode
Finds or creates the GlobalVarNode for the variable value, of type type. -
makeLocalVarNode
Finds or creates the LocalVarNode for the variable value, of type type. -
makeFieldValNode
Finds or creates the FieldVarNode for the Java field or array element. Treat Java field and array element as normal local variable. -
makeFieldRefNode
Finds or creates the FieldRefNode for base variable base and field field, of type type. -
makeContextVarNode
Finds or creates the ContextVarNode for base variable base and context. -
makeContextAllocNode
Finds or creates the ContextAllocNode for base alloc site and context. -
makeContextMethod
Finds or creates the ContextMethod for method and context. -
getAllocNode
-
getMethod2ContextsMap
-
getContextFields
-
getContextVarNodeMap
-
getContextAllocNodeMap
-
getContextMethodMap
-
getContextFieldVarNodeMap
-
makeContextField
-
getVarNodes
-
findGlobalVarNode
Finds the GlobalVarNode for the variable value, or returns null. -
findLocalVarNode
Finds the LocalVarNode for the variable value, or returns null. -
findContextVarNode
Finds the ContextVarNode for base variable value and context context, or returns null. -
createReflectionModel
-
getMethodPAG
-
resetPointsToSet
public void resetPointsToSet()
-