|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object joeq.Compiler.Analysis.IPA.PAResults
public class PAResults
Records results for pointer analysis. The results can be saved and reloaded. This class also provides methods to query the results.
Nested Class Summary | |
---|---|
static class |
PAResults.HeapLocation
|
class |
PAResults.HeapLocationSet
|
Field Summary | |
---|---|
static int |
DEFAULT_NUM_TO_PRINT
|
static double |
p0
Generic z-statistic stuff. |
Constructor Summary | |
---|---|
PAResults(PA pa)
|
Method Summary | |
---|---|
net.sf.javabdd.BDD |
calculateCommonSupertype(net.sf.javabdd.BDD types)
Given a set of types (T2), calculate the tightest common superclass (T2). |
net.sf.javabdd.BDD |
calculateDefUse(net.sf.javabdd.BDD r_v1)
Given a set of definitions (V1xV1c), calculate the set of uses (V1xV1c) that reach that set of definitions. |
net.sf.javabdd.BDD |
calculateHeapConnectivity(net.sf.javabdd.BDD h1)
Given a heap object (H1xH1c), calculate the set of heap objects (H1xH1c) that are reachable by following a chain of access paths. |
net.sf.javabdd.BDD |
calculateUseDef(net.sf.javabdd.BDD r_v1)
Given a set of uses (V1xV1c), calculate the set of definitions (V1xV1c) that reach that set of uses. |
void |
compareCallingContexts(jq_Method m)
|
void |
computeGini(jwutil.graphs.PathNumbering pn)
Compute coefficient of concentration of SCC-sizes for given path numbering. |
int |
countPointsTo(net.sf.javabdd.BDD v)
|
int |
countThreadLocalObjects()
|
int |
countTransitiveReachingDefs(net.sf.javabdd.BDD vPrelation)
|
void |
defUseGraph(net.sf.javabdd.BDD vPrelation,
boolean direction,
DataOutput out)
Output def-use or use-def graph in dot format. |
net.sf.javabdd.BDD |
findIndistinguishablyTypedObjects()
|
Set |
getAliases(jq_Method method,
SSALocation loc)
Returns a set of location/contextset pairs of locations that may be aliased with the given location, along with the set of contexts under which each alias can occur. |
CallGraph |
getCallGraph()
|
Set |
getCallTargets(ProgramLocation.QuadProgramLocation invoke)
Compute the set of results based on the BDD results. |
Set |
getCallTargets2(ProgramLocation invoke)
|
net.sf.javabdd.BDD |
getEncapsulatedHeapObjects()
|
jq_Field |
getField(int v)
|
int |
getFieldIndex(jq_Field m)
|
net.sf.javabdd.BDD |
getHashcodeTakenVars()
|
int |
getHeapIndex(MethodSummary.Node n)
|
MethodSummary.Node |
getHeapNode(int v)
|
ProgramLocation |
getInvoke(int v)
|
int |
getInvokeIndex(ProgramLocation n)
|
jq_Method |
getMethod(int v)
|
int |
getMethodIndex(jq_Method m)
|
jq_Method |
getName(int v)
|
int |
getNameIndex(jq_Method m)
|
PA |
getPAResults()
|
net.sf.javabdd.BDD |
getReachableVars(net.sf.javabdd.BDD method_plus_context0)
Starting from a method with a context (MxV1c), calculate the set of transitively-reachable variables (V1xV1c). |
net.sf.javabdd.BDD |
getThreadLocalObjects()
Return the set of thread-local objects (H1xH1c). |
net.sf.javabdd.BDD |
getTransitiveModSet(net.sf.javabdd.BDD method_plus_context0)
Given a starting method and a context (MxV1c), calculate the transitive mod set (H1xH1cxF). |
net.sf.javabdd.BDD |
getTransitiveRefSet(net.sf.javabdd.BDD method_plus_context0)
Given a starting method and a context (MxV1c), calculate the transitive ref set (H1xH1cxF). |
jq_Reference |
getType(int v)
|
int |
getTypeIndex(jq_Type m)
|
int |
getVariableIndex(MethodSummary.Node n)
|
MethodSummary.Node |
getVariableNode(int v)
|
boolean |
hasAliases(jq_Method method,
SSALocation loc)
Returns whether the given location may have aliases in any context. |
boolean |
hasAliases(jq_Method method,
SSALocation loc,
ContextSet contextSet)
Returns whether the given location may have aliases in the given set of contexts. |
static void |
initialize(String addToClasspath)
|
void |
initializeExtraDomains()
|
void |
interactive()
|
boolean |
isAliased(SSALocation a,
SSALocation b)
|
void |
loadCallGraph(String fn)
Load call graph from the given file name. |
static PAResults |
loadResults(String[] args,
String addToClasspath)
|
static PAResults |
loadResults(String bddfactory,
String prefix,
String fileName)
|
static void |
main(String[] args)
|
Set |
mod(jq_Method m,
BasicBlock bb,
Quad quad)
|
Set |
mod(ProgramLocation.QuadProgramLocation invoke,
BasicBlock bb)
Returns the set of potentially-modified locations of the given call (and transitively any calls the target may make). |
jq_Class |
parseClassName(String className)
|
void |
printAvailableBDDs(List results)
|
void |
printDefUseChain(net.sf.javabdd.BDD vPrelation)
|
void |
printHelp(List results)
|
void |
printStats()
STATISTICS |
void |
printTrace(PrintStream out,
jwutil.graphs.SCCPathNumbering.Path trace)
Print a Path as if it were a stacktrace. |
void |
printUseDefChain(net.sf.javabdd.BDD vPrelation)
Prints out the chain of use-defs, starting from the given uses (V1xV1c). |
Set |
ref(ProgramLocation.QuadProgramLocation invoke,
BasicBlock bb)
Returns the set of potentially-referenced locations of the given call (and transitively any calls the target may make). |
net.sf.javabdd.TypedBDDFactory.TypedBDD |
showArguments(net.sf.javabdd.TypedBDDFactory.TypedBDD isites)
|
void |
showSource(net.sf.javabdd.TypedBDDFactory.TypedBDD b,
int before,
int after)
Given a typedbdd that contains variables, callsites, or heap objects, display the source code for each item. |
void |
storeBDD(String name,
net.sf.javabdd.TypedBDDFactory.TypedBDD bdd1)
|
String |
toString(net.sf.javabdd.TypedBDDFactory.TypedBDD b,
int numToPrint)
|
net.sf.javabdd.TypedBDDFactory.TypedBDD |
typesThatOverrideEquals()
Compute all types that override equals() |
static double |
zcompute(double e1,
double c1)
|
static double |
zcompute(double e1,
double c1,
double p_0)
|
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
public static final int DEFAULT_NUM_TO_PRINT
public static double p0
Constructor Detail |
---|
public PAResults(PA pa)
Method Detail |
---|
public PA getPAResults()
getPAResults
in interface PointerAnalysisResults
public static void main(String[] args) throws IOException
IOException
public static void initialize(String addToClasspath)
public static PAResults loadResults(String[] args, String addToClasspath) throws IOException
IOException
public static PAResults loadResults(String bddfactory, String prefix, String fileName) throws IOException
IOException
public void loadCallGraph(String fn) throws IOException
IOException
public void storeBDD(String name, net.sf.javabdd.TypedBDDFactory.TypedBDD bdd1)
public void interactive()
public void printHelp(List results)
public void printAvailableBDDs(List results)
public void printTrace(PrintStream out, jwutil.graphs.SCCPathNumbering.Path trace)
public jq_Class parseClassName(String className)
public MethodSummary.Node getVariableNode(int v)
public int getVariableIndex(MethodSummary.Node n)
public ProgramLocation getInvoke(int v)
public int getInvokeIndex(ProgramLocation n)
public MethodSummary.Node getHeapNode(int v)
public int getHeapIndex(MethodSummary.Node n)
public jq_Field getField(int v)
public int getFieldIndex(jq_Field m)
public jq_Reference getType(int v)
public int getTypeIndex(jq_Type m)
public jq_Method getName(int v)
public int getNameIndex(jq_Method m)
public jq_Method getMethod(int v)
public int getMethodIndex(jq_Method m)
public String toString(net.sf.javabdd.TypedBDDFactory.TypedBDD b, int numToPrint)
public net.sf.javabdd.BDD calculateHeapConnectivity(net.sf.javabdd.BDD h1)
public net.sf.javabdd.BDD calculateCommonSupertype(net.sf.javabdd.BDD types)
public net.sf.javabdd.BDD calculateUseDef(net.sf.javabdd.BDD r_v1)
public net.sf.javabdd.BDD calculateDefUse(net.sf.javabdd.BDD r_v1)
public void defUseGraph(net.sf.javabdd.BDD vPrelation, boolean direction, DataOutput out) throws IOException
IOException
public void printUseDefChain(net.sf.javabdd.BDD vPrelation)
public void printDefUseChain(net.sf.javabdd.BDD vPrelation)
public net.sf.javabdd.BDD getReachableVars(net.sf.javabdd.BDD method_plus_context0)
public net.sf.javabdd.BDD getTransitiveModSet(net.sf.javabdd.BDD method_plus_context0)
public net.sf.javabdd.BDD getTransitiveRefSet(net.sf.javabdd.BDD method_plus_context0)
public net.sf.javabdd.BDD getThreadLocalObjects()
public void initializeExtraDomains()
public net.sf.javabdd.BDD getHashcodeTakenVars()
public net.sf.javabdd.BDD getEncapsulatedHeapObjects()
public net.sf.javabdd.TypedBDDFactory.TypedBDD typesThatOverrideEquals()
public net.sf.javabdd.BDD findIndistinguishablyTypedObjects()
public net.sf.javabdd.TypedBDDFactory.TypedBDD showArguments(net.sf.javabdd.TypedBDDFactory.TypedBDD isites)
public void printStats() throws IOException
IOException
public int countPointsTo(net.sf.javabdd.BDD v)
public int countTransitiveReachingDefs(net.sf.javabdd.BDD vPrelation)
public int countThreadLocalObjects()
public Set getCallTargets(ProgramLocation.QuadProgramLocation invoke)
getCallTargets
in interface PointerAnalysisResults
public Set getCallTargets2(ProgramLocation invoke)
public Set mod(ProgramLocation.QuadProgramLocation invoke, BasicBlock bb)
PointerAnalysisResults
mod
in interface PointerAnalysisResults
public Set ref(ProgramLocation.QuadProgramLocation invoke, BasicBlock bb)
PointerAnalysisResults
ref
in interface PointerAnalysisResults
public Set mod(jq_Method m, BasicBlock bb, Quad quad)
public boolean isAliased(SSALocation a, SSALocation b)
public Set getAliases(jq_Method method, SSALocation loc)
PointerAnalysisResults
getAliases
in interface PointerAnalysisResults
public boolean hasAliases(jq_Method method, SSALocation loc, ContextSet contextSet)
PointerAnalysisResults
hasAliases
in interface PointerAnalysisResults
public boolean hasAliases(jq_Method method, SSALocation loc)
PointerAnalysisResults
hasAliases
in interface PointerAnalysisResults
public void showSource(net.sf.javabdd.TypedBDDFactory.TypedBDD b, int before, int after)
SourceLister
public void computeGini(jwutil.graphs.PathNumbering pn)
public void compareCallingContexts(jq_Method m)
public static double zcompute(double e1, double c1, double p_0)
public static double zcompute(double e1, double c1)
public CallGraph getCallGraph()
getCallGraph
in interface PointerAnalysisResults
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |