Class Instantiator
java.lang.Object
com.ibm.wala.dalvik.ipa.callgraph.androidModel.parameters.Instantiator
- All Implemented Interfaces:
IInstantiator
Add code to create an instance of a type in a synthetic method.
Creates an instance of (hopefully) anything.
- Author:
- Tobias Blaschke <code@tobiasblaschke.de>
-
Constructor Summary
ConstructorDescriptionInstantiator
(VolatileMethodSummary body, TypeSafeInstructionFactory instructionFactory, SSAValueManager pm, IClassHierarchy cha, MethodReference scope, AnalysisScope analysisScope) -
Method Summary
Modifier and TypeMethodDescriptioncreateInstance
(TypeReference T, boolean asManaged, SSAValue.VariableKey key, Set<? extends SSAValue> seen) Creates a new instance of type calling all that's necessary.int
createInstance
(TypeReference type, Object... instantiatorArgs) Satisfy the interface.
-
Constructor Details
-
Instantiator
public Instantiator(VolatileMethodSummary body, TypeSafeInstructionFactory instructionFactory, SSAValueManager pm, IClassHierarchy cha, MethodReference scope, AnalysisScope analysisScope)
-
-
Method Details
-
createInstance
public SSAValue createInstance(TypeReference T, boolean asManaged, SSAValue.VariableKey key, Set<? extends 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?
-
createInstance
Satisfy the interface.- Specified by:
createInstance
in interfaceIInstantiator
- Parameters:
type
- Type to generate an instance frominstantiatorArgs
- passed through utility functions- Returns:
- SSA-Number of the instance
-