public class SpecializedInstantiator extends FlatInstantiator
For example instantiating an android.content.Context would pull in all Android-components in scope resulting in a massivly overapproximated model.
| Constructor and Description |
|---|
SpecializedInstantiator(com.ibm.wala.ipa.summaries.VolatileMethodSummary body,
com.ibm.wala.util.ssa.TypeSafeInstructionFactory instructionFactory,
com.ibm.wala.util.ssa.SSAValueManager pm,
com.ibm.wala.ipa.cha.IClassHierarchy cha,
com.ibm.wala.types.MethodReference scope,
com.ibm.wala.ipa.callgraph.AnalysisScope analysisScope,
com.ibm.wala.util.ssa.IInstantiator parent) |
| Modifier and Type | Method and Description |
|---|---|
com.ibm.wala.util.ssa.SSAValue |
createContext(com.ibm.wala.types.TypeReference T,
com.ibm.wala.util.ssa.SSAValue.VariableKey key)
Creates a new instance of android/content/Context.
|
com.ibm.wala.util.ssa.SSAValue |
createContextWrapper(com.ibm.wala.types.TypeReference T,
com.ibm.wala.util.ssa.SSAValue.VariableKey key) |
com.ibm.wala.util.ssa.SSAValue |
createInstance(com.ibm.wala.types.TypeReference T,
boolean asManaged,
com.ibm.wala.util.ssa.SSAValue.VariableKey key,
java.util.Set<? extends com.ibm.wala.util.ssa.SSAValue> seen)
Creates a new instance of type calling all that's necessary.
|
int |
createInstance(com.ibm.wala.types.TypeReference type,
java.lang.Object... instantiatorArgs)
Satisfy the interface.
|
static boolean |
understands(com.ibm.wala.types.TypeReference T) |
addCallCtorpublic SpecializedInstantiator(com.ibm.wala.ipa.summaries.VolatileMethodSummary body,
com.ibm.wala.util.ssa.TypeSafeInstructionFactory instructionFactory,
com.ibm.wala.util.ssa.SSAValueManager pm,
com.ibm.wala.ipa.cha.IClassHierarchy cha,
com.ibm.wala.types.MethodReference scope,
com.ibm.wala.ipa.callgraph.AnalysisScope analysisScope,
com.ibm.wala.util.ssa.IInstantiator parent)
public com.ibm.wala.util.ssa.SSAValue createInstance(com.ibm.wala.types.TypeReference T,
boolean asManaged,
com.ibm.wala.util.ssa.SSAValue.VariableKey key,
java.util.Set<? extends com.ibm.wala.util.ssa.SSAValue> seen)
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 in class FlatInstantiatorpublic static boolean understands(com.ibm.wala.types.TypeReference T)
public com.ibm.wala.util.ssa.SSAValue createContext(com.ibm.wala.types.TypeReference T,
com.ibm.wala.util.ssa.SSAValue.VariableKey key)
public com.ibm.wala.util.ssa.SSAValue createContextWrapper(com.ibm.wala.types.TypeReference T,
com.ibm.wala.util.ssa.SSAValue.VariableKey key)
public int createInstance(com.ibm.wala.types.TypeReference type,
java.lang.Object... instantiatorArgs)
createInstance in interface com.ibm.wala.util.ssa.IInstantiatorcreateInstance in class FlatInstantiator