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(BigBang bb,
int bci,
AnalysisMethod method)
Create an allocation site given the BCI and method.
|
BytecodeLocation |
createAllocationSite(BigBang 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(BigBang 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(BigBang bb,
AnalysisType objectType,
BytecodeLocation allocationSite,
AnalysisContext allocationContext)
Create a heap allocated object abstraction.
|
abstract AbstractSpecialInvokeTypeFlow |
createSpecialInvokeTypeFlow(jdk.vm.ci.code.BytecodePosition invokeLocation,
AnalysisType receiverType,
AnalysisMethod 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,
AnalysisMethod targetMethod,
TypeFlow<?>[] actualParameters,
ActualReturnTypeFlow actualReturn,
BytecodeLocation location)
Provides implementation for the virtual invoke type flow.
|
AnalysisContextPolicy<AnalysisContext> |
getContextPolicy() |
abstract boolean |
isContextSensitiveAllocation(BigBang 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 |
makePoperties(BigBang bb,
AnalysisObject... objects) |
int |
makePopertiesForUnion(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(BigBang bb,
AnalysisObject... a)
Note analysis object state merge.
|
abstract void |
noteMerge(BigBang bb,
AnalysisObject o)
Note analysis object state merge.
|
abstract void |
noteMerge(BigBang 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(BigBang bb, AnalysisObject... a)
public abstract void noteMerge(BigBang bb, AnalysisObject o)
public abstract boolean isContextSensitiveAllocation(BigBang bb, AnalysisType type, AnalysisContext allocationContext)
public abstract AnalysisObject createHeapObject(BigBang bb, AnalysisType objectType, BytecodeLocation allocationSite, AnalysisContext allocationContext)
public abstract AnalysisObject createConstantObject(BigBang bb, jdk.vm.ci.meta.JavaConstant constant, AnalysisType exactType)
public abstract BytecodeLocation createAllocationSite(BigBang bb, int bci, AnalysisMethod method)
public BytecodeLocation createAllocationSite(BigBang 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, AnalysisMethod targetMethod, TypeFlow<?>[] actualParameters, ActualReturnTypeFlow actualReturn, BytecodeLocation location)
public abstract AbstractSpecialInvokeTypeFlow createSpecialInvokeTypeFlow(jdk.vm.ci.code.BytecodePosition invokeLocation, AnalysisType receiverType, AnalysisMethod targetMethod, TypeFlow<?>[] actualParameters, ActualReturnTypeFlow actualReturn, BytecodeLocation location)
public int makePoperties(BigBang bb, AnalysisObject... objects)