Docjar: A Java Source and Docuemnt Enginecom.*    java.*    javax.*    org.*    all    new    plug-in

Quick Search    Search Deep

Compil3r.Quad
Class CSBDDPointerAnalysis  view CSBDDPointerAnalysis download CSBDDPointerAnalysis.java

java.lang.Object
  extended byCompil3r.Quad.CSBDDPointerAnalysis

public class CSBDDPointerAnalysis
extends java.lang.Object

Version:
$Id: CSBDDPointerAnalysis.java,v 1.6 2003/07/04 07:38:57 joewhaley Exp $

Nested Class Summary
 class CSBDDPointerAnalysis.BDDMethodSummary
           
static class CSBDDPointerAnalysis.IndexMap
           
 
Field Summary
(package private)  org.sf.javabdd.BDD aC
           
private  org.sf.javabdd.BDDFactory bdd
          Singleton BDD object that provides access to BDD functions.
(package private)  java.util.Map bddSummaries
           
(package private)  java.util.HashSet callGraphEdges
           
(package private)  java.util.HashMap callSiteToTargets
           
(package private)  org.sf.javabdd.BDD cC
           
private  CallGraph cg
          Initial call graph that we use to seed the analysis.
(package private)  boolean change
           
static int CLASSBITS
           
static int DEFAULT_CACHE_SIZE
          The absolute maximum number of variables that we will ever use in the BDD.
static int DEFAULT_NODE_COUNT
          The default initial node count.
static boolean DO_INLINING
           
(package private)  int[] domainBits
           
(package private)  int[] domainSpos
           
(package private)  org.sf.javabdd.BDDDomain FD
           
static int FIELDBITS
           
(package private)  CSBDDPointerAnalysis.IndexMap fieldIndexMap
           
(package private)  org.sf.javabdd.BDDDomain H1
           
(package private)  org.sf.javabdd.BDDPairing H1ToH2
           
(package private)  org.sf.javabdd.BDDDomain H2
           
(package private)  org.sf.javabdd.BDDPairing H2ToH1
           
static int HEAPBITS
           
(package private)  CSBDDPointerAnalysis.IndexMap heapobjIndexMap
           
(package private)  int last_typeIndex
           
(package private)  java.util.Map sccEdges
           
(package private)  org.sf.javabdd.BDDDomain T1
           
(package private)  org.sf.javabdd.BDDDomain T2
           
(package private)  org.sf.javabdd.BDDPairing T2ToT1
           
(package private)  org.sf.javabdd.BDDDomain T3
           
(package private)  org.sf.javabdd.BDDDomain T4
           
static boolean TRACE_ALL
           
static boolean TRACE_CALLEE
           
static boolean TRACE_MAPS
           
static boolean TRACE_MATCHING
           
static boolean TRACE_OVERLAP
           
static boolean TRACE_SUMMARIES
           
static boolean TRACE_TIMES
           
static boolean TRACE_TRIMMING
           
static boolean TRACE_TYPES
           
static boolean TRACE_WORKLIST
           
(package private)  org.sf.javabdd.BDD typeFilter
           
(package private)  CSBDDPointerAnalysis.IndexMap typeIndexMap
           
static boolean USE_CHA
           
(package private)  org.sf.javabdd.BDDDomain V1
           
(package private)  org.sf.javabdd.BDDPairing V1ToV2
           
(package private)  org.sf.javabdd.BDDPairing V1ToV3
           
(package private)  org.sf.javabdd.BDDDomain V2
           
(package private)  org.sf.javabdd.BDDPairing V2ToV1
           
(package private)  org.sf.javabdd.BDDPairing V2ToV3
           
(package private)  org.sf.javabdd.BDDDomain V3
           
(package private)  org.sf.javabdd.BDDPairing V3ToV1
           
(package private)  org.sf.javabdd.BDDPairing V3ToV2
           
static int VARBITS
           
(package private)  CSBDDPointerAnalysis.IndexMap variableIndexMap
           
(package private)  org.sf.javabdd.BDD vC
           
(package private)  java.util.HashSet visitedMethods
           
 
Constructor Summary
CSBDDPointerAnalysis(CallGraph cg)
           
CSBDDPointerAnalysis(CallGraph cg, int nodeCount, int cacheSize)
           
 
Method Summary
 void addAllocType(MethodSummary.Node site, Clazz.jq_Reference type)
           
 void addClassType(Clazz.jq_Reference type)
           
 void addVarType(MethodSummary.Node var, Clazz.jq_Reference type)
           
 void calculateTypeFilter()
           
(package private)  void calculateTypeHierarchy()
           
(package private)  void dumpResults()
           
(package private)  int fillInVarIndices(org.sf.javabdd.BDDDomain[] doms, int domainIndex, int numDomains, int[][] localOrders, int bitIndex, int[] varorder)
           
(package private)  CSBDDPointerAnalysis.BDDMethodSummary getBDDSummary(MethodSummary ms)
           
(package private)  Clazz.jq_Field getField(int index)
           
(package private)  int getFieldIndex(Clazz.jq_Field f)
           
(package private)  MethodSummary.Node getHeapobj(int index)
           
(package private)  int getHeapobjIndex(MethodSummary.Node site)
           
(package private)  CSBDDPointerAnalysis.IndexMap getIndexMap(org.sf.javabdd.BDDDomain d)
           
(package private)  int getNewVariableIndex(ProgramLocation mc, Clazz.jq_Method callee, int p)
           
(package private)  Clazz.jq_Reference getType(int index)
           
(package private)  int getTypeIndex(Clazz.jq_Reference f)
           
(package private)  MethodSummary.Node getVariable(int index)
           
(package private)  int getVariableIndex(MethodSummary.Node dest)
           
(package private)  void getVariableMap(int[] map, org.sf.javabdd.BDDDomain[] doms)
           
(package private)  Clazz.jq_Reference getVariableType(int index)
           
(package private)  void go(java.util.Collection roots)
           
static void main(java.lang.String[] args)
           
(package private)  int[] makeVarOrdering(boolean reverseLocal, java.lang.String ordering)
           
(package private)  void remapping(int[] varorder, int[] maps)
           
(package private)  void reset()
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

TRACE_ALL

public static final boolean TRACE_ALL
See Also:
Constant Field Values

TRACE_WORKLIST

public static final boolean TRACE_WORKLIST
See Also:
Constant Field Values

TRACE_SUMMARIES

public static final boolean TRACE_SUMMARIES
See Also:
Constant Field Values

TRACE_CALLEE

public static final boolean TRACE_CALLEE
See Also:
Constant Field Values

TRACE_OVERLAP

public static final boolean TRACE_OVERLAP
See Also:
Constant Field Values

TRACE_MATCHING

public static final boolean TRACE_MATCHING
See Also:
Constant Field Values

TRACE_TRIMMING

public static final boolean TRACE_TRIMMING
See Also:
Constant Field Values

TRACE_TYPES

public static final boolean TRACE_TYPES
See Also:
Constant Field Values

TRACE_MAPS

public static final boolean TRACE_MAPS
See Also:
Constant Field Values

TRACE_TIMES

public static final boolean TRACE_TIMES
See Also:
Constant Field Values

USE_CHA

public static final boolean USE_CHA
See Also:
Constant Field Values

DO_INLINING

public static final boolean DO_INLINING
See Also:
Constant Field Values

sccEdges

java.util.Map sccEdges

DEFAULT_NODE_COUNT

public static final int DEFAULT_NODE_COUNT
The default initial node count. Smaller values save memory for smaller problems, larger values save the time to grow the node tables on larger problems.

See Also:
Constant Field Values

DEFAULT_CACHE_SIZE

public static final int DEFAULT_CACHE_SIZE
The absolute maximum number of variables that we will ever use in the BDD. Smaller numbers will be more efficient, larger numbers will allow larger programs to be analyzed.

See Also:
Constant Field Values

bdd

private final org.sf.javabdd.BDDFactory bdd
Singleton BDD object that provides access to BDD functions.


cg

private final CallGraph cg
Initial call graph that we use to seed the analysis.


VARBITS

public static final int VARBITS
See Also:
Constant Field Values

HEAPBITS

public static final int HEAPBITS
See Also:
Constant Field Values

FIELDBITS

public static final int FIELDBITS
See Also:
Constant Field Values

CLASSBITS

public static final int CLASSBITS
See Also:
Constant Field Values

domainBits

int[] domainBits

domainSpos

int[] domainSpos

V1

org.sf.javabdd.BDDDomain V1

V2

org.sf.javabdd.BDDDomain V2

V3

org.sf.javabdd.BDDDomain V3

FD

org.sf.javabdd.BDDDomain FD

H1

org.sf.javabdd.BDDDomain H1

H2

org.sf.javabdd.BDDDomain H2

T1

org.sf.javabdd.BDDDomain T1

T2

org.sf.javabdd.BDDDomain T2

T3

org.sf.javabdd.BDDDomain T3

T4

org.sf.javabdd.BDDDomain T4

V1ToV2

org.sf.javabdd.BDDPairing V1ToV2

V1ToV3

org.sf.javabdd.BDDPairing V1ToV3

V2ToV1

org.sf.javabdd.BDDPairing V2ToV1

V2ToV3

org.sf.javabdd.BDDPairing V2ToV3

V3ToV1

org.sf.javabdd.BDDPairing V3ToV1

V3ToV2

org.sf.javabdd.BDDPairing V3ToV2

H1ToH2

org.sf.javabdd.BDDPairing H1ToH2

H2ToH1

org.sf.javabdd.BDDPairing H2ToH1

T2ToT1

org.sf.javabdd.BDDPairing T2ToT1

aC

org.sf.javabdd.BDD aC

vC

org.sf.javabdd.BDD vC

cC

org.sf.javabdd.BDD cC

typeFilter

org.sf.javabdd.BDD typeFilter

change

boolean change

visitedMethods

java.util.HashSet visitedMethods

callSiteToTargets

java.util.HashMap callSiteToTargets

callGraphEdges

java.util.HashSet callGraphEdges

variableIndexMap

CSBDDPointerAnalysis.IndexMap variableIndexMap

heapobjIndexMap

CSBDDPointerAnalysis.IndexMap heapobjIndexMap

fieldIndexMap

CSBDDPointerAnalysis.IndexMap fieldIndexMap

typeIndexMap

CSBDDPointerAnalysis.IndexMap typeIndexMap

last_typeIndex

int last_typeIndex

bddSummaries

java.util.Map bddSummaries
Constructor Detail

CSBDDPointerAnalysis

public CSBDDPointerAnalysis(CallGraph cg)

CSBDDPointerAnalysis

public CSBDDPointerAnalysis(CallGraph cg,
                            int nodeCount,
                            int cacheSize)
Method Detail

main

public static void main(java.lang.String[] args)

go

void go(java.util.Collection roots)

dumpResults

void dumpResults()

reset

void reset()

makeVarOrdering

int[] makeVarOrdering(boolean reverseLocal,
                      java.lang.String ordering)

fillInVarIndices

int fillInVarIndices(org.sf.javabdd.BDDDomain[] doms,
                     int domainIndex,
                     int numDomains,
                     int[][] localOrders,
                     int bitIndex,
                     int[] varorder)

getVariableMap

void getVariableMap(int[] map,
                    org.sf.javabdd.BDDDomain[] doms)

remapping

void remapping(int[] varorder,
               int[] maps)

getIndexMap

CSBDDPointerAnalysis.IndexMap getIndexMap(org.sf.javabdd.BDDDomain d)

getVariableIndex

int getVariableIndex(MethodSummary.Node dest)

getHeapobjIndex

int getHeapobjIndex(MethodSummary.Node site)

getFieldIndex

int getFieldIndex(Clazz.jq_Field f)

getTypeIndex

int getTypeIndex(Clazz.jq_Reference f)

getVariable

MethodSummary.Node getVariable(int index)

getHeapobj

MethodSummary.Node getHeapobj(int index)

getField

Clazz.jq_Field getField(int index)

getType

Clazz.jq_Reference getType(int index)

addClassType

public void addClassType(Clazz.jq_Reference type)

addAllocType

public void addAllocType(MethodSummary.Node site,
                         Clazz.jq_Reference type)

addVarType

public void addVarType(MethodSummary.Node var,
                       Clazz.jq_Reference type)

calculateTypeHierarchy

void calculateTypeHierarchy()

calculateTypeFilter

public void calculateTypeFilter()

getVariableType

Clazz.jq_Reference getVariableType(int index)

getNewVariableIndex

int getNewVariableIndex(ProgramLocation mc,
                        Clazz.jq_Method callee,
                        int p)

getBDDSummary

CSBDDPointerAnalysis.BDDMethodSummary getBDDSummary(MethodSummary ms)