public abstract class AbstractSpecialInvokeTypeFlow extends InvokeTypeFlow
Modifier and Type | Field and Description |
---|---|
MethodTypeFlow |
callee |
protected AnalysisContext |
callerContext
Context of the caller.
|
actualParameters, actualReturn, location, originalInvoke, receiverType, targetMethod
context, declaredType, graphRef, id, inQueue, nextId, source, usedAsAParameter, usedAsAReceiver
Modifier | Constructor and Description |
---|---|
protected |
AbstractSpecialInvokeTypeFlow(BigBang bb,
MethodFlowsGraph methodFlows,
AbstractSpecialInvokeTypeFlow original) |
protected |
AbstractSpecialInvokeTypeFlow(jdk.vm.ci.code.BytecodePosition invokeLocation,
AnalysisType receiverType,
AnalysisMethod targetMethod,
TypeFlow<?>[] actualParameters,
ActualReturnTypeFlow actualReturn,
BytecodeLocation location) |
Modifier and Type | Method and Description |
---|---|
boolean |
addState(BigBang bb,
TypeState add,
boolean postFlow) |
Collection<AnalysisMethod> |
getCallees()
Returns the callees that were linked at this invoke.
|
abstract Collection<MethodFlowsGraph> |
getCalleesFlows(BigBang bb)
Returns the context sensitive method flows for the callees resolved for the invoke type flow.
|
protected void |
initCallee()
Initialize the callee lazily so that if the invoke flow is not reached in this context, i.e.
|
boolean |
isDirectInvoke() |
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, 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
public MethodTypeFlow callee
protected AnalysisContext callerContext
protected AbstractSpecialInvokeTypeFlow(jdk.vm.ci.code.BytecodePosition invokeLocation, AnalysisType receiverType, AnalysisMethod targetMethod, TypeFlow<?>[] actualParameters, ActualReturnTypeFlow actualReturn, BytecodeLocation location)
protected AbstractSpecialInvokeTypeFlow(BigBang bb, MethodFlowsGraph methodFlows, AbstractSpecialInvokeTypeFlow original)
public void update(BigBang bb)
protected void initCallee()
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>
public abstract Collection<MethodFlowsGraph> getCalleesFlows(BigBang bb)
InvokeTypeFlow
getCalleesFlows
in class InvokeTypeFlow
public String toString()
public final boolean isDirectInvoke()
isDirectInvoke
in class InvokeTypeFlow
public Collection<AnalysisMethod> getCallees()
InvokeTypeFlow
getCallees
in class InvokeTypeFlow