com.ibm.wala.analysis.reflection
Class GetClassContextInterpeter

java.lang.Object
  extended by com.ibm.wala.analysis.reflection.GetClassContextInterpeter
All Implemented Interfaces:
RTAContextInterpreter, SSAContextInterpreter

public class GetClassContextInterpeter
extends java.lang.Object
implements SSAContextInterpreter

SSAContextInterpreter specialized to interpret Object.getClass() in a JavaTypeContext


Constructor Summary
GetClassContextInterpeter()
           
 
Method Summary
 ControlFlowGraph<SSAInstruction,ISSABasicBlock> getCFG(CGNode N)
           
 DefUse getDU(CGNode node)
           
 IR getIR(CGNode node)
           
 int getNumberOfStatements(CGNode node)
           
 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
 

Constructor Detail

GetClassContextInterpeter

public GetClassContextInterpeter()
Method Detail

getIR

public IR getIR(CGNode node)
Specified by:
getIR in interface SSAContextInterpreter
Returns:
the IR that models the method context, or null if it's an unmodelled native method

getNumberOfStatements

public int getNumberOfStatements(CGNode node)
Specified by:
getNumberOfStatements in interface SSAContextInterpreter
Returns:
the number of the statements in the IR, or -1 if it's an unmodelled native method.

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

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

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.

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

getCFG

public ControlFlowGraph<SSAInstruction,ISSABasicBlock> getCFG(CGNode N)
Specified by:
getCFG in interface SSAContextInterpreter

getDU

public DefUse getDU(CGNode node)
Specified by:
getDU in interface SSAContextInterpreter
Returns:
DefUse for the IR that models the method context, or null if it's an unmodelled native method