public abstract class AbstractAnalysisEngine extends Object implements BigBang
| Modifier and Type | Field and Description |
|---|---|
protected AnalysisPolicy |
analysisPolicy |
protected Timer |
analysisTimer |
protected org.graalvm.compiler.debug.DebugContext |
debug |
protected CompletionExecutor |
executor
Processing queue.
|
protected Boolean |
extendedAsserts |
protected HostVM |
hostVM |
protected int |
maxConstantObjectsPerType |
protected AnalysisMetaAccess |
metaAccess |
protected boolean |
optimizeReturnedParameter |
protected org.graalvm.compiler.options.OptionValues |
options |
protected Timer |
processFeaturesTimer |
protected boolean |
profileConstantObjects |
protected AnalysisUniverse |
universe |
protected UnsupportedFeatures |
unsupportedFeatures |
protected Timer |
verifyHeapTimer |
| Constructor and Description |
|---|
AbstractAnalysisEngine(org.graalvm.compiler.options.OptionValues options,
AnalysisUniverse universe,
HostVM hostVM,
AnalysisMetaAccess metaAccess,
org.graalvm.compiler.api.replacements.SnippetReflectionProvider snippetReflectionProvider,
ConstantReflectionProvider constantReflectionProvider,
org.graalvm.compiler.word.WordTypes wordTypes,
ForkJoinPool executorService,
Runnable heartbeatCallback,
UnsupportedFeatures unsupportedFeatures,
TimerCollection timerCollection) |
| Modifier and Type | Method and Description |
|---|---|
AnalysisPolicy |
analysisPolicy() |
void |
cleanupAfterAnalysis()
Clears all intermediary data to reduce the footprint.
|
boolean |
executorIsStarted() |
boolean |
extendedAsserts() |
ConstantReflectionProvider |
getConstantReflectionProvider() |
org.graalvm.compiler.debug.DebugContext |
getDebug() |
List<org.graalvm.compiler.debug.DebugHandlersFactory> |
getDebugHandlerFactories() |
Runnable |
getHeartbeatCallback() |
HostVM |
getHostVM() |
AnalysisMetaAccess |
getMetaAccess() |
org.graalvm.compiler.options.OptionValues |
getOptions() |
HostedProviders |
getProviders(com.oracle.svm.common.meta.MultiMethod.MultiMethodKey key) |
org.graalvm.compiler.api.replacements.SnippetReflectionProvider |
getSnippetReflectionProvider() |
protected abstract CompletionExecutor.Timing |
getTiming() |
AnalysisUniverse |
getUniverse() |
UnsupportedFeatures |
getUnsupportedFeatures() |
org.graalvm.compiler.word.WordTypes |
getWordTypes() |
int |
maxConstantObjectsPerType() |
boolean |
optimizeReturnedParameter() |
void |
postTask(CompletionExecutor.DebugContextRunnable task) |
void |
postTask(Runnable task) |
void |
printTimerStatistics(PrintWriter out)
Prints more detailed information about all analysis timers.
|
void |
profileConstantObject(AnalysisType type) |
void |
runAnalysis(org.graalvm.compiler.debug.DebugContext debugContext,
Function<AnalysisUniverse,Boolean> analysisEndCondition)
Iterate until analysis reaches a fixpoint.
|
HeapScanningPolicy |
scanningPolicy() |
protected void |
schedule(Runnable task) |
AnalysisType[] |
skippedHeapTypes() |
static BytecodePosition |
sourcePosition(org.graalvm.compiler.nodes.ValueNode node)
Provide a non-null position.
|
static BytecodePosition |
syntheticSourcePosition(org.graalvm.compiler.graph.Node node,
ResolvedJavaMethod method)
Creates a synthetic position for the node in the given method.
|
clone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitafterAnalysis, checkUserLimitations, fallbackResolveConcreteMethod, getProviders, initializeMetaData, isCallAllowed, onFieldAccessed, onTypeInstantiated, onTypeReachable, strengthenGraalGraphsaddRootClass, addRootClass, addRootField, addRootMethod, addRootMethod, finish, forceUnsafeUpdate, getAllInstantiatedTypes, getAllSynchronizedTypes, markFieldAccessed, markFieldRead, markFieldWritten, registerAsFrozenUnsafeAccessed, registerAsJNIAccessed, registerAsUnsafeAccessed, registerTypeAsAllocated, registerTypeAsInHeap, registerTypeAsReachableprotected final AnalysisUniverse universe
protected final AnalysisMetaAccess metaAccess
protected final AnalysisPolicy analysisPolicy
protected final Boolean extendedAsserts
protected final int maxConstantObjectsPerType
protected final boolean profileConstantObjects
protected final boolean optimizeReturnedParameter
protected final org.graalvm.compiler.options.OptionValues options
protected final org.graalvm.compiler.debug.DebugContext debug
protected final HostVM hostVM
protected final UnsupportedFeatures unsupportedFeatures
protected final CompletionExecutor executor
protected final Timer processFeaturesTimer
protected final Timer analysisTimer
protected final Timer verifyHeapTimer
public AbstractAnalysisEngine(org.graalvm.compiler.options.OptionValues options,
AnalysisUniverse universe,
HostVM hostVM,
AnalysisMetaAccess metaAccess,
org.graalvm.compiler.api.replacements.SnippetReflectionProvider snippetReflectionProvider,
ConstantReflectionProvider constantReflectionProvider,
org.graalvm.compiler.word.WordTypes wordTypes,
ForkJoinPool executorService,
Runnable heartbeatCallback,
UnsupportedFeatures unsupportedFeatures,
TimerCollection timerCollection)
public void runAnalysis(org.graalvm.compiler.debug.DebugContext debugContext,
Function<AnalysisUniverse,Boolean> analysisEndCondition)
throws InterruptedException
runAnalysis in interface BigBangdebugContext - debug contextanalysisEndCondition - hook for actions to be taken during analysis. It also dictates
when the analysis should end, i.e., it returns true if no more iterations are
required.
When the analysis is used for Native Image generation the actions could for
example be specified via
Feature.duringAnalysis(Feature.DuringAnalysisAccess).
The ending condition could be provided by
Feature.DuringAnalysisAccess.requireAnalysisIteration().AnalysisError - if the analysis failsInterruptedExceptionprotected abstract CompletionExecutor.Timing getTiming()
public void cleanupAfterAnalysis()
ReachabilityAnalysiscleanupAfterAnalysis in interface ReachabilityAnalysispublic void printTimerStatistics(PrintWriter out)
BigBangprintTimerStatistics in interface BigBangpublic AnalysisType[] skippedHeapTypes()
skippedHeapTypes in interface HeapScanningpublic boolean extendedAsserts()
extendedAsserts in interface BigBangpublic int maxConstantObjectsPerType()
public boolean optimizeReturnedParameter()
public void profileConstantObject(AnalysisType type)
public org.graalvm.compiler.options.OptionValues getOptions()
getOptions in interface BigBangpublic Runnable getHeartbeatCallback()
getHeartbeatCallback in interface BigBangpublic org.graalvm.compiler.debug.DebugContext getDebug()
public List<org.graalvm.compiler.debug.DebugHandlersFactory> getDebugHandlerFactories()
getDebugHandlerFactories in interface BigBangpublic AnalysisPolicy analysisPolicy()
analysisPolicy in interface ReachabilityAnalysispublic AnalysisUniverse getUniverse()
getUniverse in interface ReachabilityAnalysispublic final HostedProviders getProviders(com.oracle.svm.common.meta.MultiMethod.MultiMethodKey key)
getProviders in interface BigBangpublic AnalysisMetaAccess getMetaAccess()
getMetaAccess in interface ReachabilityAnalysispublic UnsupportedFeatures getUnsupportedFeatures()
getUnsupportedFeatures in interface BigBangpublic final org.graalvm.compiler.api.replacements.SnippetReflectionProvider getSnippetReflectionProvider()
getSnippetReflectionProvider in interface BigBangpublic final ConstantReflectionProvider getConstantReflectionProvider()
getConstantReflectionProvider in interface BigBangpublic org.graalvm.compiler.word.WordTypes getWordTypes()
getWordTypes in interface BigBangpublic HeapScanningPolicy scanningPolicy()
scanningPolicy in interface HeapScanningprotected void schedule(Runnable task)
public final void postTask(CompletionExecutor.DebugContextRunnable task)
public void postTask(Runnable task)
public final boolean executorIsStarted()
executorIsStarted in interface BigBangpublic static BytecodePosition sourcePosition(org.graalvm.compiler.nodes.ValueNode node)
This is necessary because Node.getNodeSourcePosition() doesn't always provide a
position, like for example for generated factory methods in FactoryThrowMethodHolder.
public static BytecodePosition syntheticSourcePosition(org.graalvm.compiler.graph.Node node,
ResolvedJavaMethod method)