com.ibm.wala.ipa.callgraph.propagation.rta
Class ContextInsensitiveRTAInterpreter

java.lang.Object
  extended by com.ibm.wala.ipa.callgraph.propagation.rta.ContextInsensitiveRTAInterpreter
All Implemented Interfaces:
RTAContextInterpreter, SSAContextInterpreter
Direct Known Subclasses:
ContextInsensitiveSSAInterpreter

public abstract class ContextInsensitiveRTAInterpreter
extends java.lang.Object
implements RTAContextInterpreter, SSAContextInterpreter

Default implementation of MethodContextInterpreter for context-insensitive analysis


Constructor Summary
ContextInsensitiveRTAInterpreter(AnalysisCache cache)
           
 
Method Summary
 AnalysisCache getAnalysisCache()
           
 java.util.Iterator<CallSiteReference> iterateCallSites(CGNode node)
           
 java.util.Iterator<FieldReference> iterateFieldsRead(CGNode node)
           
 java.util.Iterator<FieldReference> iterateFieldsWritten(CGNode node)
           
 java.util.Iterator<NewSiteReference> iterateNewSites(CGNode node)
           
 boolean recordFactoryType(CGNode node, IClass klass)
          record that the "factory" method of a node should be interpreted to allocate a particular class.
 boolean understands(CGNode node)
          Does this object understand the given method? The caller had better check this before inquiring on other properties.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface com.ibm.wala.ipa.callgraph.propagation.SSAContextInterpreter
getCFG, getDU, getIR, getNumberOfStatements
 

Constructor Detail

ContextInsensitiveRTAInterpreter

public ContextInsensitiveRTAInterpreter(AnalysisCache cache)
Method Detail

getAnalysisCache

public AnalysisCache getAnalysisCache()

iterateNewSites

public java.util.Iterator<NewSiteReference> iterateNewSites(CGNode node)
Specified by:
iterateNewSites in interface RTAContextInterpreter
Returns:
an Iterator of the types that may be allocated by a given method in a given context.

iterateCallSites

public java.util.Iterator<CallSiteReference> iterateCallSites(CGNode node)
Specified by:
iterateCallSites in interface RTAContextInterpreter
Returns:
an Iterator of the call statements that may execute in a given method for a given context

iterateFieldsRead

public java.util.Iterator<FieldReference> iterateFieldsRead(CGNode node)
Specified by:
iterateFieldsRead in interface RTAContextInterpreter
Returns:
iterator of FieldReference

iterateFieldsWritten

public java.util.Iterator<FieldReference> iterateFieldsWritten(CGNode node)
Specified by:
iterateFieldsWritten in interface RTAContextInterpreter
Returns:
iterator of FieldReference

understands

public boolean understands(CGNode node)
Description copied from interface: RTAContextInterpreter
Does this object understand the given method? The caller had better check this before inquiring on other properties.

Specified by:
understands in interface RTAContextInterpreter

recordFactoryType

public boolean recordFactoryType(CGNode node,
                                 IClass klass)
Description copied from interface: RTAContextInterpreter
record that the "factory" method of a node should be interpreted to allocate a particular class. TODO: this is a little ugly, is there a better place to move this?

Specified by:
recordFactoryType in interface RTAContextInterpreter
Returns:
true iff a NEW type was recorded, false if the type was previously recorded.