Class FlatInstantiator
java.lang.Object
com.ibm.wala.dalvik.ipa.callgraph.androidModel.parameters.FlatInstantiator
- All Implemented Interfaces:
com.ibm.wala.core.util.ssa.IInstantiator
- Direct Known Subclasses:
SpecializedInstantiator
Add code to create an instance of a type in a synthetic method.
This variant limits recursion depth.
-
Constructor Summary
ConstructorsConstructorDescriptionFlatInstantiator(com.ibm.wala.ipa.summaries.VolatileMethodSummary body, com.ibm.wala.core.util.ssa.TypeSafeInstructionFactory instructionFactory, com.ibm.wala.core.util.ssa.SSAValueManager pm, com.ibm.wala.ipa.cha.IClassHierarchy cha, com.ibm.wala.types.MethodReference scope, com.ibm.wala.ipa.callgraph.AnalysisScope analysisScope) FlatInstantiator(com.ibm.wala.ipa.summaries.VolatileMethodSummary body, com.ibm.wala.core.util.ssa.TypeSafeInstructionFactory instructionFactory, com.ibm.wala.core.util.ssa.SSAValueManager pm, com.ibm.wala.ipa.cha.IClassHierarchy cha, com.ibm.wala.types.MethodReference scope, com.ibm.wala.ipa.callgraph.AnalysisScope analysisScope, int maxDepth) -
Method Summary
Modifier and TypeMethodDescriptionprotected voidaddCallCtor(com.ibm.wala.core.util.ssa.SSAValue self, com.ibm.wala.types.MethodReference ctor, List<com.ibm.wala.core.util.ssa.SSAValue> ctorParams) Add a call to the given constructor to the body.com.ibm.wala.core.util.ssa.SSAValuecreateInstance(com.ibm.wala.types.TypeReference T, boolean asManaged, com.ibm.wala.core.util.ssa.SSAValue.VariableKey key, Set<? extends com.ibm.wala.core.util.ssa.SSAValue> seen) Creates a new instance of type calling all that's necessary.intcreateInstance(com.ibm.wala.types.TypeReference type, Object... instantiatorArgs) Satisfy the interface.
-
Constructor Details
-
FlatInstantiator
public FlatInstantiator(com.ibm.wala.ipa.summaries.VolatileMethodSummary body, com.ibm.wala.core.util.ssa.TypeSafeInstructionFactory instructionFactory, com.ibm.wala.core.util.ssa.SSAValueManager pm, com.ibm.wala.ipa.cha.IClassHierarchy cha, com.ibm.wala.types.MethodReference scope, com.ibm.wala.ipa.callgraph.AnalysisScope analysisScope) -
FlatInstantiator
public FlatInstantiator(com.ibm.wala.ipa.summaries.VolatileMethodSummary body, com.ibm.wala.core.util.ssa.TypeSafeInstructionFactory instructionFactory, com.ibm.wala.core.util.ssa.SSAValueManager pm, com.ibm.wala.ipa.cha.IClassHierarchy cha, com.ibm.wala.types.MethodReference scope, com.ibm.wala.ipa.callgraph.AnalysisScope analysisScope, int maxDepth)
-
-
Method Details
-
createInstance
public com.ibm.wala.core.util.ssa.SSAValue createInstance(com.ibm.wala.types.TypeReference T, boolean asManaged, com.ibm.wala.core.util.ssa.SSAValue.VariableKey key, Set<? extends com.ibm.wala.core.util.ssa.SSAValue> seen) Creates a new instance of type calling all that's necessary.If T is a class-type all its constructors are searched for the one found best suited (takes the least arguments, ...). New instances are created for all parameters, then the constructor is called.
If T represents multiple types (is an interface, abstract class, ...) _all_ implementors of that type are instantiated After that they get Phi-ed together.
If T is an array-type a new array of length 1 is generated.
TODO: Do we want to mix in REUSE-Parameters?
-
addCallCtor
protected void addCallCtor(com.ibm.wala.core.util.ssa.SSAValue self, com.ibm.wala.types.MethodReference ctor, List<com.ibm.wala.core.util.ssa.SSAValue> ctorParams) Add a call to the given constructor to the body.- Parameters:
self- the "this" to call the constructor onctor- the constructor to callctorParams- parameters to the ctor _without_ implicit this
-
createInstance
Satisfy the interface.- Specified by:
createInstancein interfacecom.ibm.wala.core.util.ssa.IInstantiator
-