| Package | Description |
|---|---|
| com.ibm.wala.analysis.reflection |
This package provides functions to deal with reflection.
|
| com.ibm.wala.analysis.reflection.java7 | |
| com.ibm.wala.cfg |
This package provides control-flow graph utilities.
|
| com.ibm.wala.cfg.exc.intra | |
| com.ibm.wala.classLoader |
This package provides functionality related to class loading and
management of loaded classes.
|
| com.ibm.wala.dataflow.IFDS |
This package provides an RHS solver for IFDS problems.
|
| com.ibm.wala.ipa.callgraph |
This package provides basic interfaces and functions for call graph
construction.
|
| com.ibm.wala.ipa.callgraph.cha | |
| com.ibm.wala.ipa.callgraph.impl |
This package provides some implementations of basic functions needed for
various call graph construction algorithms.
|
| com.ibm.wala.ipa.callgraph.propagation |
This package provides the base layer for propagation-based call graph
construction and pointer analysis.
|
| com.ibm.wala.ipa.callgraph.propagation.cfa |
This package provides RTA call graph
construction.
|
| com.ibm.wala.ipa.callgraph.propagation.rta |
This package provides CFA-style call graph
construction and pointer analysis.
|
| com.ibm.wala.ipa.callgraph.pruned | |
| com.ibm.wala.ipa.cfg |
This package supports interprocedural control-flow graphs, and control-flow
graphs specialized for context.
|
| com.ibm.wala.ipa.cha |
This package provides functionality related to class hierarchies.
|
| com.ibm.wala.ipa.summaries |
This package provides class hierarchy analysis.
|
| com.ibm.wala.ssa |
This package provides the WALA SSA IR.
|
| com.ibm.wala.ssa.analysis |
This package provides analyses over the WALA SSA IR.
|
| com.ibm.wala.types.annotations | |
| com.ibm.wala.types.generics | |
| com.ibm.wala.util.bytecode |
This package provides miscellaneous utilities for manipulating bytecode.
|
| com.ibm.wala.util.scope | |
| com.ibm.wala.util.ssa |
A set of classes facilitating the construction of synthetic methods.
|
| Modifier and Type | Class and Description |
|---|---|
protected class |
AbstractReflectionInterpreter.SpecializedMethod |
protected class |
FactoryBypassInterpreter.SpecializedFactoryMethod |
| Modifier and Type | Method and Description |
|---|---|
Context |
GetMethodContextSelector.getCalleeTarget(CGNode caller,
CallSiteReference site,
IMethod callee,
InstanceKey[] receiver)
If
the
CallSiteReference invokes either Class.getMethod(java.lang.String, java.lang.Class<?>...) or Class.getDeclaredMethod(java.lang.String, java.lang.Class<?>...),
and the receiver is a type constant and
the first argument is a constant,
then return a GetMethodContextSelector. |
Context |
GetClassContextSelector.getCalleeTarget(CGNode caller,
CallSiteReference site,
IMethod callee,
InstanceKey[] receiver) |
| Constructor and Description |
|---|
AbstractReflectionInterpreter.SpecializedMethod(IMethod method,
IClass declaringClass,
boolean isStatic,
boolean isFactory) |
| Modifier and Type | Method and Description |
|---|---|
Context |
MethodHandles.ContextSelectorImpl.getCalleeTarget(CGNode caller,
CallSiteReference site,
IMethod callee,
InstanceKey[] actualParameters) |
| Modifier and Type | Method and Description |
|---|---|
IMethod |
ShrikeCFG.BasicBlock.getMethod() |
IMethod |
InducedCFG.BasicBlock.getMethod() |
IMethod |
IBasicBlock.getMethod() |
IMethod |
ControlFlowGraph.getMethod() |
IMethod |
AbstractCFG.getMethod() |
| Constructor and Description |
|---|
AbstractCFG(IMethod method) |
InducedCFG(SSAInstruction[] instructions,
IMethod method,
Context context)
TODO: we do not yet support induced CFGS with exception handlers.
|
| Modifier and Type | Method and Description |
|---|---|
IMethod |
MutableCFG.getMethod() |
| Modifier and Type | Method and Description |
|---|---|
static ParameterState |
ParameterState.createDefault(IMethod m) |
| Modifier and Type | Interface and Description |
|---|---|
interface |
IBytecodeMethod
A method which originated in bytecode, decoded by Shrike
|
| Modifier and Type | Class and Description |
|---|---|
class |
ShrikeBTMethod
A wrapper around a Shrike object that represents a method
|
class |
ShrikeCTMethod
A wrapper around a Shrike object that represents a method
|
class |
SyntheticMethod
|
| Modifier and Type | Field and Description |
|---|---|
protected IMethod |
SyntheticMethod.resolvedMethod |
| Modifier and Type | Field and Description |
|---|---|
protected Map<Selector,IMethod> |
BytecodeClass.inheritCache
A mapping from Selector to IMethod used to cache method lookups from superclasses
|
protected Map<Selector,IMethod> |
BytecodeClass.methodMap
A mapping from Selector to IMethod
TODO: get rid of this for classes (though keep it for interfaces) instead ...
|
| Modifier and Type | Method and Description |
|---|---|
protected abstract IMethod[] |
BytecodeClass.computeDeclaredMethods() |
IMethod |
JVMClass.getClassInitializer() |
IMethod |
IClass.getClassInitializer() |
IMethod |
ArrayClass.getClassInitializer() |
IMethod |
IClass.getMethod(Selector selector)
Finds method matching signature.
|
IMethod |
BytecodeClass.getMethod(Selector selector) |
IMethod |
ArrayClass.getMethod(Selector sig) |
| Modifier and Type | Method and Description |
|---|---|
Collection<IMethod> |
IClass.getAllMethods()
Compute the methods declared by this class or any of its superclasses.
|
Collection<IMethod> |
BytecodeClass.getAllMethods() |
Collection<IMethod> |
ArrayClass.getAllMethods() |
Collection<IMethod> |
IClass.getDeclaredMethods() |
Collection<IMethod> |
BytecodeClass.getDeclaredMethods() |
Collection<IMethod> |
ArrayClass.getDeclaredMethods() |
| Modifier and Type | Method and Description |
|---|---|
static Collection<TypeReference> |
CodeScanner.getArraysWritten(IMethod m)
get the element types of the arrays that m may update
|
static Collection<CallSiteReference> |
CodeScanner.getCallSites(IMethod m) |
static Set |
CodeScanner.getCaughtExceptions(IMethod m) |
static Collection<FieldReference> |
CodeScanner.getFieldsRead(IMethod m) |
static Collection<FieldReference> |
CodeScanner.getFieldsWritten(IMethod m) |
static Collection<NewSiteReference> |
CodeScanner.getNewSites(IMethod m) |
Reader |
IClassLoader.getSource(IMethod method,
int offset) |
Reader |
ClassLoaderImpl.getSource(IMethod method,
int offset) |
String |
IClassLoader.getSourceFileName(IMethod method,
int offset) |
String |
ClassLoaderImpl.getSourceFileName(IMethod method,
int offset) |
static boolean |
CodeScanner.hasObjectArrayLoad(IMethod m) |
static boolean |
CodeScanner.hasObjectArrayStore(IMethod m) |
static Iterator |
CodeScanner.iterateCastTypes(IMethod m)
Return the types this method may cast to
|
| Constructor and Description |
|---|
SyntheticMethod(IMethod method,
IClass declaringClass,
boolean isStatic,
boolean isFactory) |
| Modifier and Type | Method and Description |
|---|---|
IR |
ICFGSupergraph.getIR(IMethod m,
Context c) |
| Modifier and Type | Field and Description |
|---|---|
protected IMethod |
Entrypoint.method
The method to be called
|
| Modifier and Type | Method and Description |
|---|---|
IMethod |
MethodTargetSelector.getCalleeTarget(CGNode caller,
CallSiteReference site,
IClass receiver)
Given a calling node, a call site and (optionally) a dispatch type, return the target method to be called.
|
IMethod |
Entrypoint.getMethod() |
IMethod |
CGNode.getMethod()
Return the
method this CGNode represents. |
| Modifier and Type | Method and Description |
|---|---|
IRFactory<IMethod> |
AnalysisCache.getIRFactory() |
| Modifier and Type | Method and Description |
|---|---|
Context |
ContextSelector.getCalleeTarget(CGNode caller,
CallSiteReference site,
IMethod callee,
InstanceKey[] actualParameters)
Given a calling node and a call site, returns the Context in which the callee should be evaluated.
|
IR |
AnalysisCache.getIR(IMethod method)
Find or create an IR for the method using the
Everywhere context and default SSAOptions |
CGNode |
CallGraph.getNode(IMethod method,
Context C)
If you want to get all the nodes corresponding to a particular method, regardless of context, then use
getNodes |
void |
AnalysisCache.invalidate(IMethod method,
Context C) |
| Constructor and Description |
|---|
Entrypoint(IMethod method) |
| Constructor and Description |
|---|
AnalysisCache(IRFactory<IMethod> irFactory) |
| Modifier and Type | Method and Description |
|---|---|
CGNode |
CHACallGraph.findOrCreateNode(IMethod method,
Context C) |
| Modifier and Type | Class and Description |
|---|---|
class |
AbstractRootMethod
A synthetic method from the
FakeRootClass |
class |
FakeRootMethod
A synthetic method that models the fake root node.
|
class |
FakeWorldClinitMethod
A synthetic method that calls all class initializers
|
| Modifier and Type | Field and Description |
|---|---|
protected IMethod |
BasicCallGraph.NodeImpl.method
The method this node represents.
|
| Modifier and Type | Method and Description |
|---|---|
IMethod |
ClassHierarchyMethodTargetSelector.getCalleeTarget(CGNode caller,
CallSiteReference call,
IClass receiver)
This target selector searches the class hierarchy for the method matching the signature of the call that is appropriate for the
receiver type.
|
IMethod |
FakeRootClass.getClassInitializer() |
IMethod |
BasicCallGraph.NodeImpl.getMethod() |
IMethod |
FakeRootClass.getMethod(Selector selector) |
| Modifier and Type | Method and Description |
|---|---|
Collection<IMethod> |
FakeRootClass.getAllMethods() |
Collection<IMethod> |
FakeRootClass.getDeclaredMethods() |
| Modifier and Type | Method and Description |
|---|---|
void |
FakeRootClass.addMethod(IMethod m) |
CGNode |
ExplicitCallGraph.findOrCreateNode(IMethod method,
Context context) |
abstract CGNode |
BasicCallGraph.findOrCreateNode(IMethod method,
Context C)
Use with extreme care.
|
Context |
UnionContextSelector.getCalleeTarget(CGNode caller,
CallSiteReference site,
IMethod callee,
InstanceKey[] receiver)
If only one Context exists return it, else return a DelegatingContext.
|
Context |
DelegatingContextSelector.getCalleeTarget(CGNode caller,
CallSiteReference site,
IMethod callee,
InstanceKey[] receiver) |
Context |
DefaultContextSelector.getCalleeTarget(CGNode caller,
CallSiteReference site,
IMethod callee,
InstanceKey[] receiver) |
Context |
ContextInsensitiveSelector.getCalleeTarget(CGNode caller,
CallSiteReference site,
IMethod callee,
InstanceKey[] receiver) |
CGNode |
PartialCallGraph.getNode(IMethod method,
Context C) |
CGNode |
BasicCallGraph.getNode(IMethod method,
Context C) |
protected ExplicitCallGraph.ExplicitNode |
ExplicitCallGraph.makeNode(IMethod method,
Context context)
subclasses may wish to override!
|
protected TypeReference[][] |
SubtypesEntrypoint.makeParameterTypes(IMethod method) |
protected TypeReference[][] |
DefaultEntrypoint.makeParameterTypes(IMethod method) |
protected TypeReference[][] |
ArgumentTypeEntrypoint.makeParameterTypes(IMethod method) |
protected TypeReference[] |
SubtypesEntrypoint.makeParameterTypes(IMethod method,
int i) |
protected TypeReference[] |
DefaultEntrypoint.makeParameterTypes(IMethod method,
int i) |
| Constructor and Description |
|---|
ArgumentTypeEntrypoint(IMethod method,
IClassHierarchy cha) |
BasicCallGraph.Key(IMethod m,
Context C) |
BasicCallGraph.NodeImpl(IMethod method,
Context C) |
DefaultEntrypoint(IMethod method,
IClassHierarchy cha) |
ExplicitCallGraph.ExplicitNode(IMethod method,
Context C) |
SubtypesEntrypoint(IMethod method,
IClassHierarchy cha) |
| Modifier and Type | Method and Description |
|---|---|
IMethod |
FilteredPointerKey.TargetMethodFilter.getMethod() |
IMethod |
AllocationSite.getMethod() |
| Modifier and Type | Method and Description |
|---|---|
Context |
TargetMethodContextSelector.getCalleeTarget(CGNode caller,
CallSiteReference site,
IMethod callee,
InstanceKey[] R) |
Context |
ReceiverTypeContextSelector.getCalleeTarget(CGNode caller,
CallSiteReference site,
IMethod callee,
InstanceKey[] receiver) |
Context |
CloneContextSelector.getCalleeTarget(CGNode caller,
CallSiteReference site,
IMethod callee,
InstanceKey[] receiver) |
| Constructor and Description |
|---|
AllocationSite(IMethod method,
NewSiteReference allocation,
IClass type) |
FilteredPointerKey.TargetMethodFilter(IMethod targetMethod) |
| Modifier and Type | Method and Description |
|---|---|
IMethod[] |
CallString.getMethods() |
| Modifier and Type | Method and Description |
|---|---|
static CGNode |
ContainerContextSelector.findNodeRecursiveMatchingContext(IMethod m,
Context c)
This method walks recursively up the definition of a context C, to see if
the chain of contexts that give rise to C includes the method M.
|
static Context |
ContainerContextSelector.findRecursiveMatchingContext(IMethod M,
Context C)
This method walks recursively up the definition of a context C, to see if
the chain of contexts that give rise to C includes the method M.
|
static Context |
ContainerContextSelector.findRecursiveMatchingContext(IMethod M,
Context C,
InstanceKey receiver)
This method walks recursively up the definition of a context C, to see if
the chain of contexts that give rise to C a) includes the method M.
|
Context |
OneLevelSiteContextSelector.getCalleeTarget(CGNode caller,
CallSiteReference site,
IMethod callee,
InstanceKey[] receiver) |
Context |
ContainerContextSelector.getCalleeTarget(CGNode caller,
CallSiteReference site,
IMethod callee,
InstanceKey[] keys) |
Context |
CallStringContextSelector.getCalleeTarget(CGNode caller,
CallSiteReference site,
IMethod callee,
InstanceKey[] receiver) |
protected int |
nCFAContextSelector.getLength(CGNode caller,
CallSiteReference site,
IMethod target) |
protected abstract int |
CallStringContextSelector.getLength(CGNode caller,
CallSiteReference site,
IMethod target) |
boolean |
ContainerContextSelector.mayUnderstand(CGNode caller,
CallSiteReference site,
IMethod targetMethod,
InstanceKey receiver) |
| Constructor and Description |
|---|
CallString(CallSiteReference site,
IMethod method) |
| Modifier and Type | Method and Description |
|---|---|
protected ExplicitCallGraph.ExplicitNode |
DelegatingExplicitCallGraph.makeNode(IMethod method,
Context context) |
| Constructor and Description |
|---|
DelegatingExplicitCallGraph.DelegatingCGNode(IMethod method,
Context C) |
| Modifier and Type | Method and Description |
|---|---|
CGNode |
PrunedCallGraph.getNode(IMethod method,
Context C) |
| Modifier and Type | Method and Description |
|---|---|
IMethod |
PrunedCFG.getMethod() |
IMethod |
BasicBlockInContext.getMethod() |
| Modifier and Type | Method and Description |
|---|---|
static IMethod |
ClassHierarchyUtil.getOverriden(IMethod m)
Return the method that m overrides, or null if none
|
static IMethod |
ClassHierarchyUtil.getRootOfInheritanceTree(IMethod m)
find the root of the inheritance tree for method m.
|
IMethod |
IClassHierarchy.resolveMethod(IClass receiverClass,
Selector selector)
Return the unique receiver of an invocation of method on an object of type declaringClass
|
IMethod |
ClassHierarchy.resolveMethod(IClass receiverClass,
Selector selector)
Return the unique target of an invocation of method on an object of type declaringClass
|
IMethod |
IClassHierarchy.resolveMethod(MethodReference m)
Return the unique receiver of an invocation of method on an object of type m.getDeclaredClass
|
IMethod |
ClassHierarchy.resolveMethod(MethodReference m)
Return the unique receiver of an invocation of method on an object of type m.getDeclaredClass
|
| Modifier and Type | Method and Description |
|---|---|
Set<IMethod> |
IClassHierarchy.getPossibleTargets(IClass receiverClass,
MethodReference ref)
Find the possible targets of a call to a method reference where the receiver is of a certain type
|
Set<IMethod> |
ClassHierarchy.getPossibleTargets(IClass declaredClass,
MethodReference ref)
Find the possible receivers of a call to a method reference
|
Set<IMethod> |
IClassHierarchy.getPossibleTargets(MethodReference ref)
Find the possible targets of a call to a method reference
|
Set<IMethod> |
ClassHierarchy.getPossibleTargets(MethodReference ref)
Find the possible targets of a call to a method reference.
|
| Modifier and Type | Method and Description |
|---|---|
static IMethod |
ClassHierarchyUtil.getOverriden(IMethod m)
Return the method that m overrides, or null if none
|
static IMethod |
ClassHierarchyUtil.getRootOfInheritanceTree(IMethod m)
find the root of the inheritance tree for method m.
|
| Modifier and Type | Class and Description |
|---|---|
class |
SummarizedMethod
A
SyntheticMethod representing the semantics encoded in a MethodSummary |
class |
SummarizedMethodWithNames
A SummarizedMethod (for synthetic functions) with variable names.
|
| Modifier and Type | Method and Description |
|---|---|
IMethod |
LambdaMethodTargetSelector.getCalleeTarget(CGNode caller,
CallSiteReference site,
IClass receiver) |
IMethod |
BypassMethodTargetSelector.getCalleeTarget(CGNode caller,
CallSiteReference site,
IClass dispatchType)
Check to see if a particular call site should be bypassed, before checking normal resolution of the receiver.
|
IMethod |
LambdaSummaryClass.getClassInitializer() |
IMethod |
BypassSyntheticClass.getClassInitializer() |
IMethod |
LambdaSummaryClass.getMethod(Selector selector) |
IMethod |
BypassSyntheticClass.getMethod(Selector selector) |
| Modifier and Type | Method and Description |
|---|---|
Collection<IMethod> |
LambdaSummaryClass.getAllMethods() |
Collection<IMethod> |
BypassSyntheticClass.getAllMethods() |
Collection<IMethod> |
LambdaSummaryClass.getDeclaredMethods() |
Collection<IMethod> |
BypassSyntheticClass.getDeclaredMethods() |
| Modifier and Type | Method and Description |
|---|---|
protected SyntheticMethod |
BypassMethodTargetSelector.findOrCreateSyntheticMethod(IMethod m,
boolean isStatic) |
SyntheticMethod |
MethodBypass.getBypass(IMethod target)
Method getBypass.
|
Reader |
BypassSyntheticClassLoader.getSource(IMethod method,
int offset) |
String |
BypassSyntheticClassLoader.getSourceFileName(IMethod method,
int offset) |
| Constructor and Description |
|---|
SummarizedMethodWithNames.SyntheticIRWithNames(IMethod method,
Context context,
AbstractCFG cfg,
SSAInstruction[] instructions,
SSAOptions options,
Map<Integer,ConstantValue> constants,
Map<Integer,Atom> localNames) |
SyntheticIR(IMethod method,
Context context,
AbstractCFG cfg,
SSAInstruction[] instructions,
SSAOptions options,
Map<Integer,ConstantValue> constants)
Create an SSA form, induced over a list of instructions provided externally.
|
| Modifier and Type | Interface and Description |
|---|---|
interface |
IRFactory<T extends IMethod>
This is intended as an internal interface; clients probably shouldn't be using this directly.
|
| Modifier and Type | Field and Description |
|---|---|
protected IMethod |
SSACFG.method
The
IMethod this ControlFlowGraph represents |
| Modifier and Type | Method and Description |
|---|---|
IMethod |
SSACFG.getMethod() |
IMethod |
SSACFG.BasicBlock.getMethod() |
IMethod |
IR.getMethod() |
| Modifier and Type | Method and Description |
|---|---|
boolean |
DefaultIRFactory.contextIsIrrelevant(IMethod method)
|
DefUse |
SSACache.findOrCreateDU(IMethod m,
Context c,
SSAOptions options) |
IR |
SSACache.findOrCreateIR(IMethod m,
Context c,
SSAOptions options) |
void |
SSACache.invalidate(IMethod method,
Context c)
Invalidate all cached information for a
|
void |
SSACache.invalidateDU(IMethod method,
Context c)
Invalidate the cached
DefUse for a |
void |
SSACache.invalidateIR(IMethod method,
Context c)
Invalidate the cached IR for a
|
ControlFlowGraph |
DefaultIRFactory.makeCFG(IMethod method,
Context c) |
IR |
DefaultIRFactory.makeIR(IMethod method,
Context c,
SSAOptions options) |
| Constructor and Description |
|---|
IR(IMethod method,
SSAInstruction[] instructions,
SymbolTable symbolTable,
SSACFG cfg,
SSAOptions options)
Simple constructor when someone else has already computed the symbol table and cfg.
|
SSACFG(IMethod method,
AbstractCFG cfg,
SSAInstruction[] instructions) |
| Constructor and Description |
|---|
SSACache(IRFactory<IMethod> factory) |
| Modifier and Type | Method and Description |
|---|---|
IMethod |
ExplodedControlFlowGraph.getMethod() |
| Modifier and Type | Method and Description |
|---|---|
static boolean |
Annotations.hasAnnotation(IMethod m,
TypeName type)
Does a particular method have a particular annotation?
|
| Modifier and Type | Method and Description |
|---|---|
static TypeSignature[] |
MethodTypeSignature.getArguments(IMethod method) |
static MethodTypeSignature |
MethodTypeSignature.getMethodTypeSignature(IMethod method) |
static FormalTypeParameter[] |
FormalTypeParameter.getTypeParameters(IMethod method) |
| Modifier and Type | Method and Description |
|---|---|
IMethod |
BytecodeStream.method()
Returns the method that this bytecode stream is from
|
| Constructor and Description |
|---|
BytecodeStream(IMethod m,
byte[] bc) |
| Modifier and Type | Method and Description |
|---|---|
static Set<IMethod> |
JUnitEntryPoints.getSetUpTearDownMethods(IClass testClass)
Get the "setUp" and "tearDown" methods in the given class
|
| Modifier and Type | Method and Description |
|---|---|
static boolean |
JUnitEntryPoints.isJUnitMethod(IMethod m)
Check if the given method is a JUnit test method, assuming that it is declared in a JUnit test class.
|
| Constructor and Description |
|---|
ParameterAccessor(IMethod method)
Read the parameters from an IMethod.
|
Copyright © 2015. All rights reserved.