public abstract class AnalysisPolicy extends Object
| Modifier and Type | Field and Description |
|---|---|
protected boolean |
aliasArrayTypeFlows |
protected org.graalvm.compiler.options.OptionValues |
options |
protected boolean |
relaxTypeFlowConstraints |
protected boolean |
removeSaturatedTypeFlows |
protected int |
typeFlowSaturationCutoff |
| Constructor and Description |
|---|
AnalysisPolicy(org.graalvm.compiler.options.OptionValues options) |
| Modifier and Type | Method and Description |
|---|---|
boolean |
aliasArrayTypeFlows() |
protected abstract AnalysisContextPolicy<? extends AnalysisContext> |
contextPolicy()
Provide an analysis context policy.
|
abstract BytecodeLocation |
createAllocationSite(PointsToAnalysis bb,
int bci,
AnalysisMethod method)
Create an allocation site given the BCI and method.
|
BytecodeLocation |
createAllocationSite(PointsToAnalysis bb,
Object key,
AnalysisMethod method)
Create the allocation site given a unique key and method.
|
abstract ArrayElementsTypeStore |
createArrayElementsTypeStore(AnalysisObject object,
AnalysisUniverse universe) |
abstract AnalysisObject |
createConstantObject(PointsToAnalysis bb,
jdk.vm.ci.meta.JavaConstant constant,
AnalysisType exactType)
Create a constant object abstraction.
|
abstract FieldTypeStore |
createFieldTypeStore(AnalysisObject object,
AnalysisField field,
AnalysisUniverse universe) |
abstract AnalysisObject |
createHeapObject(PointsToAnalysis bb,
AnalysisType objectType,
BytecodeLocation allocationSite,
AnalysisContext allocationContext)
Create a heap allocated object abstraction.
|
abstract AbstractSpecialInvokeTypeFlow |
createSpecialInvokeTypeFlow(jdk.vm.ci.code.BytecodePosition invokeLocation,
AnalysisType receiverType,
PointsToAnalysisMethod targetMethod,
TypeFlow<?>[] actualParameters,
ActualReturnTypeFlow actualReturn,
BytecodeLocation location)
Provides implementation for the virtual invoke type flow.
|
abstract AbstractVirtualInvokeTypeFlow |
createVirtualInvokeTypeFlow(jdk.vm.ci.code.BytecodePosition invokeLocation,
AnalysisType receiverType,
PointsToAnalysisMethod targetMethod,
TypeFlow<?>[] actualParameters,
ActualReturnTypeFlow actualReturn,
BytecodeLocation location)
Provides implementation for the virtual invoke type flow.
|
AnalysisContextPolicy<AnalysisContext> |
getContextPolicy() |
abstract boolean |
isContextSensitiveAllocation(PointsToAnalysis bb,
AnalysisType type,
AnalysisContext allocationContext)
Specifies if an allocation site should be modeled context sensitively.
|
abstract boolean |
isMergingEnabled()
Check if merging is enabled.
|
abstract boolean |
isSummaryObject(AnalysisObject object)
In some analysis policies some objects can summarize others.
|
int |
makeProperties(BigBang bb,
AnalysisObject... objects) |
int |
makePropertiesForUnion(TypeState s1,
TypeState s2) |
abstract 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.
|
abstract void |
noteMerge(PointsToAnalysis bb,
AnalysisObject... a)
Note analysis object state merge.
|
abstract void |
noteMerge(PointsToAnalysis bb,
AnalysisObject o)
Note analysis object state merge.
|
abstract void |
noteMerge(PointsToAnalysis bb,
TypeState t)
Note type state merge.
|
boolean |
relaxTypeFlowConstraints() |
boolean |
removeSaturatedTypeFlows() |
int |
typeFlowSaturationCutoff() |
protected final org.graalvm.compiler.options.OptionValues options
protected final boolean aliasArrayTypeFlows
protected final boolean relaxTypeFlowConstraints
protected final boolean removeSaturatedTypeFlows
protected final int typeFlowSaturationCutoff
public AnalysisPolicy(org.graalvm.compiler.options.OptionValues options)
public boolean aliasArrayTypeFlows()
public boolean relaxTypeFlowConstraints()
public boolean removeSaturatedTypeFlows()
public int typeFlowSaturationCutoff()
protected abstract AnalysisContextPolicy<? extends AnalysisContext> contextPolicy()
public AnalysisContextPolicy<AnalysisContext> getContextPolicy()
public abstract boolean needsConstantCache()
public abstract boolean isSummaryObject(AnalysisObject object)
public abstract boolean isMergingEnabled()
public abstract void noteMerge(PointsToAnalysis bb, TypeState t)
public abstract void noteMerge(PointsToAnalysis bb, AnalysisObject... a)
public abstract void noteMerge(PointsToAnalysis bb, AnalysisObject o)
public abstract boolean isContextSensitiveAllocation(PointsToAnalysis bb, AnalysisType type, AnalysisContext allocationContext)
public abstract AnalysisObject createHeapObject(PointsToAnalysis bb, AnalysisType objectType, BytecodeLocation allocationSite, AnalysisContext allocationContext)
public abstract AnalysisObject createConstantObject(PointsToAnalysis bb, jdk.vm.ci.meta.JavaConstant constant, AnalysisType exactType)
public abstract BytecodeLocation createAllocationSite(PointsToAnalysis bb, int bci, AnalysisMethod method)
public BytecodeLocation createAllocationSite(PointsToAnalysis bb, Object key, AnalysisMethod method)
public abstract FieldTypeStore createFieldTypeStore(AnalysisObject object, AnalysisField field, AnalysisUniverse universe)
public abstract ArrayElementsTypeStore createArrayElementsTypeStore(AnalysisObject object, AnalysisUniverse universe)
public abstract AbstractVirtualInvokeTypeFlow createVirtualInvokeTypeFlow(jdk.vm.ci.code.BytecodePosition invokeLocation, AnalysisType receiverType, PointsToAnalysisMethod targetMethod, TypeFlow<?>[] actualParameters, ActualReturnTypeFlow actualReturn, BytecodeLocation location)
public abstract AbstractSpecialInvokeTypeFlow createSpecialInvokeTypeFlow(jdk.vm.ci.code.BytecodePosition invokeLocation, AnalysisType receiverType, PointsToAnalysisMethod targetMethod, TypeFlow<?>[] actualParameters, ActualReturnTypeFlow actualReturn, BytecodeLocation location)
public int makeProperties(BigBang bb, AnalysisObject... objects)