public class FactoryBypassInterpreter extends AbstractReflectionInterpreter
| Modifier and Type | Class and Description |
|---|---|
protected class |
FactoryBypassInterpreter.SpecializedFactoryMethod |
AbstractReflectionInterpreter.IgnoreSerializableWarning, AbstractReflectionInterpreter.ManySubtypesWarning, AbstractReflectionInterpreter.NoSubtypesWarning, AbstractReflectionInterpreter.SpecializedMethodcache, CONE_BOUND, DEBUG, indexLocal, options, typeIndexMap| Constructor and Description |
|---|
FactoryBypassInterpreter(AnalysisOptions options,
IAnalysisCacheView iAnalysisCacheView) |
| Modifier and Type | Method and Description |
|---|---|
java.util.Set<TypeReference> |
getCaughtExceptions(CGNode node) |
ControlFlowGraph<SSAInstruction,ISSABasicBlock> |
getCFG(CGNode N) |
DefUse |
getDU(CGNode node) |
java.util.Iterator<SSAInstruction> |
getInvokeStatements(CGNode node) |
IR |
getIR(CGNode node) |
IRView |
getIRView(CGNode node) |
int |
getNumberOfStatements(CGNode node) |
boolean |
hasObjectArrayLoad(CGNode node) |
boolean |
hasObjectArrayStore(CGNode node) |
java.util.Iterator<CallSiteReference> |
iterateCallSites(CGNode node) |
java.util.Iterator<TypeReference> |
iterateCastTypes(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 |
recordType(IClassHierarchy cha,
Context context,
TypeReference type) |
boolean |
understands(CGNode node)
Does this object understand the given method? The caller had better check this before inquiring
on other properties.
|
getCallSiteForType, getExceptionsForType, getLocalForType, getNewSiteForType, typeRef2TypeAbstractionpublic FactoryBypassInterpreter(AnalysisOptions options, IAnalysisCacheView iAnalysisCacheView)
options - governing analysis optionspublic IR getIR(CGNode node)
public int getNumberOfStatements(CGNode node)
public boolean understands(CGNode node)
CHAContextInterpreterpublic java.util.Iterator<NewSiteReference> iterateNewSites(CGNode node)
public java.util.Iterator<SSAInstruction> getInvokeStatements(CGNode node)
public java.util.Iterator<CallSiteReference> iterateCallSites(CGNode node)
public boolean recordType(IClassHierarchy cha, Context context, TypeReference type)
public boolean recordFactoryType(CGNode node, IClass klass)
RTAContextInterpreterTODO: this is a little ugly, is there a better place to move this?
public java.util.Iterator<FieldReference> iterateFieldsRead(CGNode node)
public java.util.Iterator<FieldReference> iterateFieldsWritten(CGNode node)
public java.util.Set<TypeReference> getCaughtExceptions(CGNode node)
public boolean hasObjectArrayLoad(CGNode node)
public boolean hasObjectArrayStore(CGNode node)
public java.util.Iterator<TypeReference> iterateCastTypes(CGNode node)
public ControlFlowGraph<SSAInstruction,ISSABasicBlock> getCFG(CGNode N)