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, targetMethod
context, declaredType, graphRef, id, inQueue, nextId, source, usedAsAParameter, usedAsAReceiver
Modifier | Constructor and Description |
---|---|
protected |
AbstractVirtualInvokeTypeFlow(BigBang bb,
MethodFlowsGraph methodFlows,
AbstractVirtualInvokeTypeFlow original) |
protected |
AbstractVirtualInvokeTypeFlow(jdk.vm.ci.code.BytecodePosition invokeLocation,
AnalysisType receiverType,
AnalysisMethod targetMethod,
TypeFlow<?>[] actualParameters,
ActualReturnTypeFlow actualReturn,
BytecodeLocation location) |
Modifier and Type | Method and Description |
---|---|
protected boolean |
addCallee(AnalysisMethod callee) |
boolean |
addInvokeLocation(jdk.vm.ci.code.BytecodePosition invokeLocation) |
boolean |
addState(BigBang 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(BigBang bb,
TypeFlow<?> observed)
Notified by an observed flow that it is saturated.
|
abstract void |
onObservedUpdate(BigBang bb)
Notify the observer that the observed type flow state has changed.
|
String |
toString() |
void |
update(BigBang bb) |
actualParametersCount, addState, canBeStaticallyBound, createContextInsensitiveInvoke, filterReceiverState, getActualParameter, getActualParameters, getActualReturn, getCalleesFlows, getReceiver, getReceiverType, getResult, getTargetMethod, initContextInsensitiveInvoke, isContextInsensitiveVirtualInvoke, linkCallee, setActualReturn, setObserved, updateReceiver, updateReceiver
addInput, addObservee, addObserver, addOriginalObserver, addOriginalUse, addUse, canSaturate, context, copy, declaredTypeFilter, doAddUse, equals, filter, getDeclaredType, getInputs, getObservees, getObservers, getSlot, getSource, getState, getUses, graphRef, hashCode, id, initClone, isAllInstantiated, isClone, isCloseToAllInstantiated, isSaturated, isUsedAsAParameter, isUsedAsAReceiver, method, notifyObservers, onInputSaturated, onSaturated, receiver, removeInput, removeObservee, removeObserver, removeUse, replacedObservedWith, replaceObservedWith, setSaturated, setSlot, setState, setUsedAsAParameter, setUsedAsAReceiver, swapOut
protected volatile Object callees
protected volatile Object invokeLocations
protected AbstractVirtualInvokeTypeFlow(jdk.vm.ci.code.BytecodePosition invokeLocation, AnalysisType receiverType, AnalysisMethod targetMethod, TypeFlow<?>[] actualParameters, ActualReturnTypeFlow actualReturn, BytecodeLocation location)
protected AbstractVirtualInvokeTypeFlow(BigBang 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()
isDirectInvoke
in class InvokeTypeFlow
public void update(BigBang bb)
public abstract void onObservedUpdate(BigBang bb)
TypeFlow
onObservedUpdate
in class TypeFlow<jdk.vm.ci.code.BytecodePosition>
public void onObservedSaturated(BigBang bb, TypeFlow<?> observed)
TypeFlow
onObservedSaturated
in class TypeFlow<jdk.vm.ci.code.BytecodePosition>
protected boolean addCallee(AnalysisMethod callee)
public Collection<AnalysisMethod> getCallees()
InvokeTypeFlow
getCallees
in class InvokeTypeFlow