soot.jimple.toolkits.callgraph
Class OnFlyCallGraphBuilder.TraceBasedReflectionModel

java.lang.Object
  extended by soot.jimple.toolkits.callgraph.OnFlyCallGraphBuilder.TraceBasedReflectionModel
All Implemented Interfaces:
ReflectionModel
Enclosing class:
OnFlyCallGraphBuilder

public class OnFlyCallGraphBuilder.TraceBasedReflectionModel
extends Object
implements ReflectionModel


Field Summary
protected  Set<soot.jimple.toolkits.callgraph.OnFlyCallGraphBuilder.TraceBasedReflectionModel.Guard> guards
           
protected  ReflectionTraceInfo reflectionInfo
           
 
Method Summary
 void classForName(SootMethod container, Stmt forNameInvokeStmt)
          Adds an edge to all class initializers of all possible receivers of Class.forName() calls within source.
 void classNewInstance(SootMethod container, Stmt newInstanceInvokeStmt)
          Adds an edge to the constructor of the target class from this call to Class.newInstance().
 void contructorNewInstance(SootMethod container, Stmt newInstanceInvokeStmt)
          Adds a special edge of kind Kind.REFL_CONSTR_NEWINSTANCE to all possible target constructors of this call to Constructor.newInstance(Object...).
 void methodInvoke(SootMethod container, Stmt invokeStmt)
          Adds a special edge of kind Kind.REFL_INVOKE to all possible target methods of this call to Method.invoke(Object, Object...).
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

guards

protected Set<soot.jimple.toolkits.callgraph.OnFlyCallGraphBuilder.TraceBasedReflectionModel.Guard> guards

reflectionInfo

protected ReflectionTraceInfo reflectionInfo
Method Detail

classForName

public void classForName(SootMethod container,
                         Stmt forNameInvokeStmt)
Adds an edge to all class initializers of all possible receivers of Class.forName() calls within source.

Specified by:
classForName in interface ReflectionModel

classNewInstance

public void classNewInstance(SootMethod container,
                             Stmt newInstanceInvokeStmt)
Adds an edge to the constructor of the target class from this call to Class.newInstance().

Specified by:
classNewInstance in interface ReflectionModel

contructorNewInstance

public void contructorNewInstance(SootMethod container,
                                  Stmt newInstanceInvokeStmt)
Adds a special edge of kind Kind.REFL_CONSTR_NEWINSTANCE to all possible target constructors of this call to Constructor.newInstance(Object...). Those kinds of edges are treated specially in terms of how parameters are assigned, as parameters to the reflective call are passed into the argument array of Constructor.newInstance(Object...).

Specified by:
contructorNewInstance in interface ReflectionModel
See Also:
PAG.addCallTarget(Edge)

methodInvoke

public void methodInvoke(SootMethod container,
                         Stmt invokeStmt)
Adds a special edge of kind Kind.REFL_INVOKE to all possible target methods of this call to Method.invoke(Object, Object...). Those kinds of edges are treated specially in terms of how parameters are assigned, as parameters to the reflective call are passed into the argument array of Method.invoke(Object, Object...).

Specified by:
methodInvoke in interface ReflectionModel
See Also:
PAG.addCallTarget(Edge)