public abstract class AbstractVirtualInvokeTypeFlow extends InvokeTypeFlow
| Modifier and Type | Field and Description |
|---|---|
protected Object |
callees |
protected Object |
invokeLocations
The context insensitive invoke needs to keep track of all the locations it is swapped in.
|
actualParameters, actualReturn, location, originalInvoke, receiverType, targetMethodcontext, declaredType, graphRef, id, inQueue, nextId, source, usedAsAParameter, usedAsAReceiver| Modifier | Constructor and Description |
|---|---|
protected |
AbstractVirtualInvokeTypeFlow(jdk.vm.ci.code.BytecodePosition invokeLocation,
AnalysisType receiverType,
PointsToAnalysisMethod targetMethod,
TypeFlow<?>[] actualParameters,
ActualReturnTypeFlow actualReturn,
BytecodeLocation location) |
protected |
AbstractVirtualInvokeTypeFlow(PointsToAnalysis bb,
MethodFlowsGraph methodFlows,
AbstractVirtualInvokeTypeFlow original) |
| Modifier and Type | Method and Description |
|---|---|
protected boolean |
addCallee(AnalysisMethod callee) |
boolean |
addInvokeLocation(jdk.vm.ci.code.BytecodePosition invokeLocation) |
boolean |
addState(PointsToAnalysis bb,
TypeState add,
boolean postFlow) |
Collection<AnalysisMethod> |
getCallees()
Returns the callees that were linked at this invoke.
|
Collection<jdk.vm.ci.code.BytecodePosition> |
getInvokeLocations()
The context insensitive virual invoke returns all the locations where it is swapped in.
|
boolean |
isContextInsensitive() |
boolean |
isDirectInvoke() |
void |
markAsContextInsensitive() |
void |
onObservedSaturated(PointsToAnalysis bb,
TypeFlow<?> observed)
Notified by an observed flow that it is saturated.
|
abstract void |
onObservedUpdate(PointsToAnalysis bb)
Notify the observer that the observed type flow state has changed.
|
String |
toString() |
void |
update(PointsToAnalysis bb) |
actualParametersCount, addState, canBeStaticallyBound, createContextInsensitiveInvoke, filterReceiverState, getActualParameter, getActualParameters, getActualReturn, getCalleesFlows, getPosition, getReceiver, getReceiverType, getResult, getTargetMethod, initContextInsensitiveInvoke, isContextInsensitiveVirtualInvoke, linkCallee, setActualReturn, setObserved, updateReceiver, updateReceiveraddInput, addObservee, addObserver, addOriginalObserver, addOriginalUse, addUse, canSaturate, context, copy, declaredTypeFilter, doAddUse, equals, filter, format, formatSource, getDeclaredType, getInputs, getObservees, getObservers, getSlot, getSource, getState, getUses, graphRef, hashCode, id, initClone, isAllInstantiated, isClone, isSaturated, isUsedAsAParameter, isUsedAsAReceiver, method, notifyObserverOfSaturation, notifyObservers, notifyUseOfSaturation, onInputSaturated, onSaturated, receiver, removeInput, removeObservee, removeObserver, removeUse, replacedObservedWith, replaceObservedWith, setSaturated, setSlot, setState, setUsedAsAParameter, setUsedAsAReceiver, swapAtObserver, swapAtUse, swapOutprotected volatile Object callees
protected volatile Object invokeLocations
protected AbstractVirtualInvokeTypeFlow(jdk.vm.ci.code.BytecodePosition invokeLocation,
AnalysisType receiverType,
PointsToAnalysisMethod targetMethod,
TypeFlow<?>[] actualParameters,
ActualReturnTypeFlow actualReturn,
BytecodeLocation location)
protected AbstractVirtualInvokeTypeFlow(PointsToAnalysis bb, MethodFlowsGraph methodFlows, AbstractVirtualInvokeTypeFlow original)
public void markAsContextInsensitive()
public boolean isContextInsensitive()
public boolean addInvokeLocation(jdk.vm.ci.code.BytecodePosition invokeLocation)
public Collection<jdk.vm.ci.code.BytecodePosition> getInvokeLocations()
public final boolean isDirectInvoke()
public boolean addState(PointsToAnalysis bb, TypeState add, boolean postFlow)
public void update(PointsToAnalysis bb)
public abstract void onObservedUpdate(PointsToAnalysis bb)
TypeFlowonObservedUpdate in class TypeFlow<jdk.vm.ci.code.BytecodePosition>public void onObservedSaturated(PointsToAnalysis bb, TypeFlow<?> observed)
TypeFlowonObservedSaturated in class TypeFlow<jdk.vm.ci.code.BytecodePosition>protected boolean addCallee(AnalysisMethod callee)
public Collection<AnalysisMethod> getCallees()
InvokeTypeFlowgetCallees in interface InvokeInfogetCallees in class InvokeTypeFlow