public final class DynamicNewInstanceTypeFlow extends TypeFlow<BytecodePosition>
| Constructor and Description |
|---|
DynamicNewInstanceTypeFlow(BytecodePosition location,
TypeFlow<?> newTypeFlow,
AnalysisType type) |
| Modifier and Type | Method and Description |
|---|---|
AnalysisContext |
allocationContext() |
boolean |
canSaturate()
Can this type flow saturate? By default all type flows can saturate, with the exception of a
few ones that need to track all their types, e.g., AllInstantiated, AllSynchronized, etc.
|
TypeFlow<BytecodePosition> |
copy(PointsToAnalysis bb,
MethodFlowsGraph methodFlows)
By default a type flow is not cloneable.
|
void |
initFlow(PointsToAnalysis bb)
Initialization code for some type flow corner cases.
|
boolean |
needsInitialization()
Type flows that require initialization after the graph is created need to override this
method and return true.
|
void |
onObservedSaturated(PointsToAnalysis bb,
TypeFlow<?> observed)
Notified by an observed flow that it is saturated.
|
void |
onObservedUpdate(PointsToAnalysis bb)
Notify the observer that the observed type flow state has changed.
|
void |
setObserved(TypeFlow<?> declaredTypeFlow)
Set the type flow that this flow is observing.
|
String |
toString() |
addInput, addObservee, addObserver, addObserver, addState, addState, addUse, addUse, clearInputs, clearObservees, clearObservers, clearUses, declaredTypeFilter, declaredTypeFilter, doAddUse, equals, filter, filterUncheckedInterface, format, formatSource, getDeclaredType, getInputs, getObservees, getObservers, getSlot, getSource, getState, getUses, graphRef, hashCode, id, invalidate, isAllInstantiated, isClone, isContextInsensitive, isSaturated, isValid, method, notifyObserverOfSaturation, notifyUseOfSaturation, onInputSaturated, onSaturated, onSaturated, receiver, removeObserver, removeUse, replacedObservedWith, replaceObservedWith, setSaturated, setSlot, setState, swapAtObserver, swapAtUse, swapOut, updatepublic DynamicNewInstanceTypeFlow(BytecodePosition location,
TypeFlow<?> newTypeFlow,
AnalysisType type)
public TypeFlow<BytecodePosition> copy(PointsToAnalysis bb, MethodFlowsGraph methodFlows)
TypeFlowpublic void initFlow(PointsToAnalysis bb)
TypeFlowTypeFlow.needsInitialization() also
needs to be overridden to enable type flow initialization.public boolean needsInitialization()
TypeFlowneedsInitialization in class TypeFlow<BytecodePosition>public void onObservedUpdate(PointsToAnalysis bb)
TypeFlowonObservedUpdate in class TypeFlow<BytecodePosition>public AnalysisContext allocationContext()
public void setObserved(TypeFlow<?> declaredTypeFlow)
TypeFlowsetObserved in class TypeFlow<BytecodePosition>public void onObservedSaturated(PointsToAnalysis bb, TypeFlow<?> observed)
TypeFlowonObservedSaturated in class TypeFlow<BytecodePosition>public boolean canSaturate()
TypeFlowcanSaturate in class TypeFlow<BytecodePosition>