public class DefaultAnalysisPolicy extends AnalysisPolicy
aliasArrayTypeFlows, options, relaxTypeFlowConstraints, removeSaturatedTypeFlows, typeFlowSaturationCutoff| Constructor and Description |
|---|
DefaultAnalysisPolicy(org.graalvm.compiler.options.OptionValues options) |
| Modifier and Type | Method and Description |
|---|---|
boolean |
addOriginalObserver(PointsToAnalysis bb,
TypeFlow<?> flow,
TypeFlow<?> observer) |
boolean |
addOriginalUse(PointsToAnalysis bb,
TypeFlow<?> flow,
TypeFlow<?> use) |
AnalysisContext |
allocationContext(PointsToAnalysis bb,
MethodFlowsGraph callerGraph) |
TypeState |
cloneState(PointsToAnalysis bb,
TypeState currentState,
TypeState inputState,
BytecodePosition cloneSite,
AnalysisContext allocationContext)
Create type state for clone.
|
ArrayElementsTypeStore |
createArrayElementsTypeStore(AnalysisObject object,
AnalysisUniverse universe) |
AnalysisObject |
createConstantObject(PointsToAnalysis bb,
JavaConstant constant,
AnalysisType exactType)
Create a constant object abstraction.
|
FieldTypeStore |
createFieldTypeStore(AnalysisObject object,
AnalysisField field,
AnalysisUniverse universe) |
AnalysisObject |
createHeapObject(PointsToAnalysis bb,
AnalysisType type,
BytecodePosition allocationSite,
AnalysisContext allocationContext)
Create a heap allocated object abstraction.
|
MethodTypeFlow |
createMethodTypeFlow(PointsToAnalysisMethod method) |
AbstractSpecialInvokeTypeFlow |
createSpecialInvokeTypeFlow(BytecodePosition invokeLocation,
AnalysisType receiverType,
PointsToAnalysisMethod targetMethod,
TypeFlow<?>[] actualParameters,
ActualReturnTypeFlow actualReturn)
Provides implementation for the special invoke type flow.
|
AbstractStaticInvokeTypeFlow |
createStaticInvokeTypeFlow(BytecodePosition invokeLocation,
AnalysisType receiverType,
PointsToAnalysisMethod targetMethod,
TypeFlow<?>[] actualParameters,
ActualReturnTypeFlow actualReturn)
Provides implementation for the static invoke type flow.
|
AbstractVirtualInvokeTypeFlow |
createVirtualInvokeTypeFlow(BytecodePosition invokeLocation,
AnalysisType receiverType,
PointsToAnalysisMethod targetMethod,
TypeFlow<?>[] actualParameters,
ActualReturnTypeFlow actualReturn)
Provides implementation for the virtual invoke type flow.
|
TypeState |
doIntersection(PointsToAnalysis bb,
MultiTypeState s1,
MultiTypeState s2) |
TypeState |
doIntersection(PointsToAnalysis bb,
MultiTypeState s1,
SingleTypeState s2) |
TypeState |
doSubtraction(PointsToAnalysis bb,
MultiTypeState s1,
MultiTypeState s2) |
TypeState |
doSubtraction(PointsToAnalysis bb,
MultiTypeState s1,
SingleTypeState s2) |
TypeState |
doUnion(PointsToAnalysis bb,
MultiTypeState s1,
MultiTypeState s2) |
TypeState |
doUnion(PointsToAnalysis bb,
MultiTypeState s1,
SingleTypeState s2) |
TypeState |
doUnion(PointsToAnalysis bb,
SingleTypeState s1,
SingleTypeState s2) |
TypeState |
dynamicNewInstanceState(PointsToAnalysis bb,
TypeState currentState,
TypeState newState,
BytecodePosition allocationSite,
AnalysisContext allocationContext)
Create type state for dynamic new instance.
|
TypeState |
forContextInsensitiveTypeState(PointsToAnalysis bb,
TypeState state)
Simplifies a type state by replacing all context sensitive objects with context insensitive
objects.
|
boolean |
isContextSensitiveAllocation(PointsToAnalysis bb,
AnalysisType type,
AnalysisContext allocationContext)
Specifies if an allocation site should be modeled context sensitively.
|
boolean |
isContextSensitiveAnalysis() |
boolean |
isMergingEnabled()
Check if merging is enabled.
|
boolean |
isSummaryObject(AnalysisObject object)
In some analysis policies some objects can summarize others.
|
void |
linkActualReturn(PointsToAnalysis bb,
boolean isStatic,
InvokeTypeFlow invoke) |
void |
linkClonedObjects(PointsToAnalysis bb,
TypeFlow<?> inputFlow,
CloneTypeFlow cloneFlow,
BytecodePosition source)
Link the elements of the cloned objects (array flows or field flows) to the elements of the
source objects.
|
MultiTypeState |
multiTypeState(PointsToAnalysis bb,
boolean canBeNull,
int properties,
BitSet typesBitSet,
AnalysisObject... objects) |
boolean |
needsConstantCache()
Specifies if this policy models constants objects context sensitively, i.e., by creating a
different abstraction for each JavaConstant of the same type, and thus needs a constants
cache.
|
void |
noteMerge(PointsToAnalysis bb,
AnalysisObject... a)
Note analysis object state merge.
|
void |
noteMerge(PointsToAnalysis bb,
AnalysisObject a)
Note analysis object state merge.
|
void |
noteMerge(PointsToAnalysis bb,
TypeState t)
Note type state merge.
|
TypeFlow<?> |
proxy(BytecodePosition source,
TypeFlow<?> input) |
void |
registerAsImplementationInvoked(InvokeTypeFlow invoke,
MethodFlowsGraph calleeFlows) |
SingleTypeState |
singleTypeState(PointsToAnalysis bb,
boolean canBeNull,
int properties,
AnalysisType type,
AnalysisObject... objects) |
MethodFlowsGraph |
staticRootMethodGraph(PointsToAnalysis bb,
PointsToAnalysisMethod pointsToMethod) |
aliasArrayTypeFlows, doIntersection, doIntersection, doSubtraction, doSubtraction, makeProperties, makePropertiesForUnion, relaxTypeFlowConstraints, removeSaturatedTypeFlows, typeFlowSaturationCutoffpublic DefaultAnalysisPolicy(org.graalvm.compiler.options.OptionValues options)
public boolean isContextSensitiveAnalysis()
isContextSensitiveAnalysis in class AnalysisPolicypublic MethodTypeFlow createMethodTypeFlow(PointsToAnalysisMethod method)
createMethodTypeFlow in class AnalysisPolicypublic boolean needsConstantCache()
AnalysisPolicyneedsConstantCache in class AnalysisPolicypublic boolean isSummaryObject(AnalysisObject object)
AnalysisPolicyisSummaryObject in class AnalysisPolicypublic boolean isMergingEnabled()
AnalysisPolicyisMergingEnabled in class AnalysisPolicypublic void noteMerge(PointsToAnalysis bb, TypeState t)
AnalysisPolicynoteMerge in class AnalysisPolicypublic void noteMerge(PointsToAnalysis bb, AnalysisObject... a)
AnalysisPolicynoteMerge in class AnalysisPolicypublic void noteMerge(PointsToAnalysis bb, AnalysisObject a)
AnalysisPolicynoteMerge in class AnalysisPolicypublic boolean isContextSensitiveAllocation(PointsToAnalysis bb, AnalysisType type, AnalysisContext allocationContext)
AnalysisPolicyisContextSensitiveAllocation in class AnalysisPolicypublic AnalysisObject createHeapObject(PointsToAnalysis bb, AnalysisType type, BytecodePosition allocationSite, AnalysisContext allocationContext)
AnalysisPolicycreateHeapObject in class AnalysisPolicypublic AnalysisObject createConstantObject(PointsToAnalysis bb, JavaConstant constant, AnalysisType exactType)
AnalysisPolicycreateConstantObject in class AnalysisPolicypublic TypeState dynamicNewInstanceState(PointsToAnalysis bb, TypeState currentState, TypeState newState, BytecodePosition allocationSite, AnalysisContext allocationContext)
AnalysisPolicydynamicNewInstanceState in class AnalysisPolicypublic TypeState cloneState(PointsToAnalysis bb, TypeState currentState, TypeState inputState, BytecodePosition cloneSite, AnalysisContext allocationContext)
AnalysisPolicycloneState in class AnalysisPolicypublic void linkClonedObjects(PointsToAnalysis bb, TypeFlow<?> inputFlow, CloneTypeFlow cloneFlow, BytecodePosition source)
AnalysisPolicylinkClonedObjects in class AnalysisPolicypublic FieldTypeStore createFieldTypeStore(AnalysisObject object, AnalysisField field, AnalysisUniverse universe)
createFieldTypeStore in class AnalysisPolicypublic ArrayElementsTypeStore createArrayElementsTypeStore(AnalysisObject object, AnalysisUniverse universe)
createArrayElementsTypeStore in class AnalysisPolicypublic AbstractVirtualInvokeTypeFlow createVirtualInvokeTypeFlow(BytecodePosition invokeLocation, AnalysisType receiverType, PointsToAnalysisMethod targetMethod, TypeFlow<?>[] actualParameters, ActualReturnTypeFlow actualReturn)
AnalysisPolicycreateVirtualInvokeTypeFlow in class AnalysisPolicypublic AbstractSpecialInvokeTypeFlow createSpecialInvokeTypeFlow(BytecodePosition invokeLocation, AnalysisType receiverType, PointsToAnalysisMethod targetMethod, TypeFlow<?>[] actualParameters, ActualReturnTypeFlow actualReturn)
AnalysisPolicycreateSpecialInvokeTypeFlow in class AnalysisPolicypublic AbstractStaticInvokeTypeFlow createStaticInvokeTypeFlow(BytecodePosition invokeLocation, AnalysisType receiverType, PointsToAnalysisMethod targetMethod, TypeFlow<?>[] actualParameters, ActualReturnTypeFlow actualReturn)
AnalysisPolicycreateStaticInvokeTypeFlow in class AnalysisPolicypublic MethodFlowsGraph staticRootMethodGraph(PointsToAnalysis bb, PointsToAnalysisMethod pointsToMethod)
staticRootMethodGraph in class AnalysisPolicypublic AnalysisContext allocationContext(PointsToAnalysis bb, MethodFlowsGraph callerGraph)
allocationContext in class AnalysisPolicypublic TypeFlow<?> proxy(BytecodePosition source, TypeFlow<?> input)
proxy in class AnalysisPolicypublic boolean addOriginalUse(PointsToAnalysis bb, TypeFlow<?> flow, TypeFlow<?> use)
addOriginalUse in class AnalysisPolicypublic boolean addOriginalObserver(PointsToAnalysis bb, TypeFlow<?> flow, TypeFlow<?> observer)
addOriginalObserver in class AnalysisPolicypublic void linkActualReturn(PointsToAnalysis bb, boolean isStatic, InvokeTypeFlow invoke)
linkActualReturn in class AnalysisPolicypublic void registerAsImplementationInvoked(InvokeTypeFlow invoke, MethodFlowsGraph calleeFlows)
registerAsImplementationInvoked in class AnalysisPolicypublic TypeState forContextInsensitiveTypeState(PointsToAnalysis bb, TypeState state)
AnalysisPolicyforContextInsensitiveTypeState in class AnalysisPolicypublic SingleTypeState singleTypeState(PointsToAnalysis bb, boolean canBeNull, int properties, AnalysisType type, AnalysisObject... objects)
singleTypeState in class AnalysisPolicypublic MultiTypeState multiTypeState(PointsToAnalysis bb, boolean canBeNull, int properties, BitSet typesBitSet, AnalysisObject... objects)
multiTypeState in class AnalysisPolicypublic TypeState doUnion(PointsToAnalysis bb, SingleTypeState s1, SingleTypeState s2)
doUnion in class AnalysisPolicypublic TypeState doUnion(PointsToAnalysis bb, MultiTypeState s1, SingleTypeState s2)
doUnion in class AnalysisPolicypublic TypeState doUnion(PointsToAnalysis bb, MultiTypeState s1, MultiTypeState s2)
doUnion in class AnalysisPolicypublic TypeState doIntersection(PointsToAnalysis bb, MultiTypeState s1, SingleTypeState s2)
doIntersection in class AnalysisPolicypublic TypeState doIntersection(PointsToAnalysis bb, MultiTypeState s1, MultiTypeState s2)
doIntersection in class AnalysisPolicypublic TypeState doSubtraction(PointsToAnalysis bb, MultiTypeState s1, SingleTypeState s2)
doSubtraction in class AnalysisPolicypublic TypeState doSubtraction(PointsToAnalysis bb, MultiTypeState s1, MultiTypeState s2)
doSubtraction in class AnalysisPolicy