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, targetMethodcontext, declaredType, graphRef, id, inQueue, nextId, source, usedAsAParameter, usedAsAReceiver| Modifier | Constructor and Description |
|---|---|
protected |
AbstractSpecialInvokeTypeFlow(jdk.vm.ci.code.BytecodePosition invokeLocation,
AnalysisType receiverType,
PointsToAnalysisMethod targetMethod,
TypeFlow<?>[] actualParameters,
ActualReturnTypeFlow actualReturn,
BytecodeLocation location) |
protected |
AbstractSpecialInvokeTypeFlow(PointsToAnalysis bb,
MethodFlowsGraph methodFlows,
AbstractSpecialInvokeTypeFlow original) |
| Modifier and Type | Method and Description |
|---|---|
boolean |
addState(PointsToAnalysis bb,
TypeState add,
boolean postFlow) |
Collection<AnalysisMethod> |
getCallees()
Returns the callees that were linked at this invoke.
|
abstract Collection<MethodFlowsGraph> |
getCalleesFlows(PointsToAnalysis 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(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, 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, swapOutpublic MethodTypeFlow callee
protected AnalysisContext callerContext
protected AbstractSpecialInvokeTypeFlow(jdk.vm.ci.code.BytecodePosition invokeLocation,
AnalysisType receiverType,
PointsToAnalysisMethod targetMethod,
TypeFlow<?>[] actualParameters,
ActualReturnTypeFlow actualReturn,
BytecodeLocation location)
protected AbstractSpecialInvokeTypeFlow(PointsToAnalysis bb, MethodFlowsGraph methodFlows, AbstractSpecialInvokeTypeFlow original)
public boolean addState(PointsToAnalysis bb, TypeState add, boolean postFlow)
public void update(PointsToAnalysis bb)
protected void initCallee()
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>public abstract Collection<MethodFlowsGraph> getCalleesFlows(PointsToAnalysis bb)
InvokeTypeFlowgetCalleesFlows in class InvokeTypeFlowpublic String toString()
public final boolean isDirectInvoke()
public Collection<AnalysisMethod> getCallees()
InvokeTypeFlowgetCallees in interface InvokeInfogetCallees in class InvokeTypeFlow