Class CloneInterpreter
java.lang.Object
com.ibm.wala.analysis.reflection.CloneInterpreter
- All Implemented Interfaces:
CHAContextInterpreter, RTAContextInterpreter, SSAContextInterpreter
A context interpreter for java.lang.Object.clone
TODO: The current implementation does not model CloneNotSupportedExceptions
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final MethodReferenceComment forCLONEstatic final AtomComment forcloneAtom -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptiongetCaughtExceptions(CGNode node) intgetNumberOfStatements(CGNode node) booleanhasObjectArrayLoad(CGNode node) booleanhasObjectArrayStore(CGNode node) iterateCallSites(CGNode node) iterateCastTypes(CGNode node) iterateFieldsRead(CGNode node) iterateFieldsWritten(CGNode node) iterateNewSites(CGNode node) booleanrecordFactoryType(CGNode node, IClass klass) record that the "factory" method of a node should be interpreted to allocate a particular class.booleanunderstands(CGNode node) Does this object understand the given method? The caller had better check this before inquiring on other properties.
-
Field Details
-
cloneAtom
Comment forcloneAtom -
CLONE
Comment forCLONE
-
-
Constructor Details
-
CloneInterpreter
public CloneInterpreter()
-
-
Method Details
-
getIR
- Specified by:
getIRin interfaceSSAContextInterpreter- Returns:
- the IR that models the method context, or null if it's an unmodelled native method
-
getIRView
- Specified by:
getIRViewin interfaceSSAContextInterpreter
-
getNumberOfStatements
- Specified by:
getNumberOfStatementsin interfaceSSAContextInterpreter- Returns:
- the number of the statements in the IR, or -1 if it's an unmodelled native method.
-
understands
Description copied from interface:CHAContextInterpreterDoes this object understand the given method? The caller had better check this before inquiring on other properties.- Specified by:
understandsin interfaceCHAContextInterpreter
-
iterateNewSites
- Specified by:
iterateNewSitesin interfaceCHAContextInterpreter- Specified by:
iterateNewSitesin interfaceRTAContextInterpreter- Returns:
- an Iterator of the types that may be allocated by a given method in a given context.
-
iterateCallSites
- Specified by:
iterateCallSitesin interfaceCHAContextInterpreter- Returns:
- an Iterator of the call statements that may execute in a given method for a given context
-
recordFactoryType
Description copied from interface:RTAContextInterpreterrecord 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:
recordFactoryTypein interfaceRTAContextInterpreter- Returns:
- true iff a NEW type was recorded, false if the type was previously recorded.
-
iterateFieldsRead
- Specified by:
iterateFieldsReadin interfaceRTAContextInterpreter- Returns:
- iterator of FieldReference
-
iterateFieldsWritten
- Specified by:
iterateFieldsWrittenin interfaceRTAContextInterpreter- Returns:
- iterator of FieldReference
-
getCaughtExceptions
-
hasObjectArrayLoad
-
hasObjectArrayStore
-
iterateCastTypes
-
getCFG
- Specified by:
getCFGin interfaceSSAContextInterpreter
-
getDU
- Specified by:
getDUin interfaceSSAContextInterpreter- Returns:
- DefUse for the IR that models the method context, or null if it's an unmodelled native method
-