public abstract class BigBang extends Object
| Modifier and Type | Class and Description |
|---|---|
protected class |
BigBang.AnalysisTiming |
protected static class |
BigBang.BucketTiming |
static class |
BigBang.ConstantObjectsProfiler |
static interface |
BigBang.TypeFlowRunnable |
| Modifier and Type | Field and Description |
|---|---|
Timer |
checkObjectsTimer |
protected HostVM |
hostVM |
protected AnalysisMetaAccess |
metaAccess |
AtomicLong |
numParsedGraphs |
protected boolean |
reportAnalysisStatistics |
protected boolean |
trackTypeFlowInputs |
Timer |
typeFlowTimer |
protected AnalysisUniverse |
universe |
| Constructor and Description |
|---|
BigBang(org.graalvm.compiler.options.OptionValues options,
AnalysisUniverse universe,
HostedProviders providers,
HostVM hostVM,
ForkJoinPool executorService,
UnsupportedFeatures unsupportedFeatures) |
| Modifier and Type | Method and Description |
|---|---|
abstract boolean |
addRoot(jdk.vm.ci.meta.JavaConstant constant,
Object root)
Associates a JavaConstant with a root.
|
AnalysisMethod |
addRootMethod(AnalysisMethod aMethod) |
AnalysisMethod |
addRootMethod(Executable method) |
AnalysisType |
addSystemClass(Class<?> clazz,
boolean addFields,
boolean addArrayClass) |
AnalysisType |
addSystemField(Class<?> clazz,
String fieldName) |
void |
addSystemMethod(Class<?> clazz,
String methodName,
Class<?>... parameterTypes) |
AnalysisType |
addSystemStaticField(Class<?> clazz,
String fieldName) |
AnalysisPolicy |
analysisPolicy() |
protected void |
checkObjectGraph(ObjectScanner objectScanner)
Traverses the object graph to discover references to new types.
|
void |
checkUnsupportedSynchronization(AnalysisMethod method,
int bci,
AnalysisType aType)
Check if the type is allowed to be used for synchronization.
|
void |
checkUserLimitations() |
void |
cleanupAfterAnalysis() |
AnalysisContextPolicy<AnalysisContext> |
contextPolicy() |
static ForkJoinPool |
createExecutor(org.graalvm.compiler.debug.DebugContext debug,
int numberOfThreads) |
MethodTypeFlowBuilder |
createMethodTypeFlowBuilder(BigBang bb,
MethodTypeFlow methodFlow) |
boolean |
doTypeflow() |
boolean |
executorIsStarted() |
boolean |
finish()
Performs the analysis.
|
void |
forceUnsafeUpdate(AnalysisField field)
Force update of the unsafe loads and unsafe store type flows when a field is registered as
unsafe accessed 'on the fly', i.e., during the analysis.
|
AnalysisType |
forClass(Class<?> clazz) |
AnalysisType |
forClass(String className) |
TypeFlow<?> |
getAllInstantiatedTypeFlow() |
TypeFlow<?> |
getAllSynchronizedTypeFlow() |
TypeState |
getAllSynchronizedTypeState() |
org.graalvm.compiler.core.common.spi.ConstantFieldProvider |
getConstantFieldProvider() |
jdk.vm.ci.meta.ConstantReflectionProvider |
getConstantReflectionProvider() |
org.graalvm.compiler.debug.DebugContext |
getDebug() |
List<org.graalvm.compiler.debug.DebugHandlersFactory> |
getDebugHandlerFactories() |
CompletionExecutor |
getExecutor() |
AnalysisType |
getGraalNodeListType() |
AnalysisType |
getGraalNodeType() |
HostVM |
getHostVM() |
AnalysisMetaAccess |
getMetaAccess() |
AnalysisType |
getObjectArrayType() |
AnalysisType |
getObjectType() |
org.graalvm.compiler.options.OptionValues |
getOptions() |
HostedProviders |
getProviders() |
org.graalvm.compiler.nodes.spi.Replacements |
getReplacements() |
abstract Object |
getRoot(jdk.vm.ci.meta.JavaConstant constant)
Retrieves a root associated with a JavaConstant.
|
org.graalvm.compiler.api.replacements.SnippetReflectionProvider |
getSnippetReflectionProvider() |
AnalysisType |
getThreadType() |
AnalysisType |
getThrowableType() |
AnalysisUniverse |
getUniverse() |
TypeFlow<?> |
getUnknownTypeFlow() |
UnsupportedFeatures |
getUnsupportedFeatures() |
boolean |
isCallAllowed(BigBang bb,
AnalysisMethod caller,
AnalysisMethod target,
org.graalvm.compiler.graph.NodeSourcePosition srcPosition)
You can blacklist certain callees here.
|
abstract boolean |
isValidClassLoader(Object valueObj) |
void |
postFlow(TypeFlow<?> operation) |
void |
postTask(CompletionExecutor.DebugContextRunnable task) |
void |
registerUnsafeLoad(OffsetLoadTypeFlow.AbstractUnsafeLoadTypeFlow unsafeLoad) |
void |
registerUnsafeStore(OffsetStoreTypeFlow.AbstractUnsafeStoreTypeFlow unsafeStore) |
boolean |
reportAnalysisStatistics() |
void |
reportIllegalUnknownUse(AnalysisMethod method,
org.graalvm.compiler.graph.Node source,
String message) |
boolean |
trackConcreteAnalysisObjects(AnalysisType type)
By default the analysis tracks all concrete objects for all types (if the analysis is context
sensitive).
|
boolean |
trackTypeFlowInputs() |
protected final AnalysisUniverse universe
protected final AnalysisMetaAccess metaAccess
protected final HostVM hostVM
protected final boolean trackTypeFlowInputs
protected final boolean reportAnalysisStatistics
public final AtomicLong numParsedGraphs
public final Timer typeFlowTimer
public final Timer checkObjectsTimer
public BigBang(org.graalvm.compiler.options.OptionValues options,
AnalysisUniverse universe,
HostedProviders providers,
HostVM hostVM,
ForkJoinPool executorService,
UnsupportedFeatures unsupportedFeatures)
public boolean trackTypeFlowInputs()
public boolean reportAnalysisStatistics()
public org.graalvm.compiler.options.OptionValues getOptions()
public List<org.graalvm.compiler.debug.DebugHandlersFactory> getDebugHandlerFactories()
public org.graalvm.compiler.debug.DebugContext getDebug()
public MethodTypeFlowBuilder createMethodTypeFlowBuilder(BigBang bb, MethodTypeFlow methodFlow)
public abstract boolean addRoot(jdk.vm.ci.meta.JavaConstant constant,
Object root)
public abstract Object getRoot(jdk.vm.ci.meta.JavaConstant constant)
public void registerUnsafeLoad(OffsetLoadTypeFlow.AbstractUnsafeLoadTypeFlow unsafeLoad)
public void registerUnsafeStore(OffsetStoreTypeFlow.AbstractUnsafeStoreTypeFlow unsafeStore)
public void reportIllegalUnknownUse(AnalysisMethod method, org.graalvm.compiler.graph.Node source, String message)
public void forceUnsafeUpdate(AnalysisField field)
field - the newly unsafe registered field. We use its declaring type to filter the
unsafe access flows that need to be updated.public boolean trackConcreteAnalysisObjects(AnalysisType type)
public boolean isCallAllowed(BigBang bb, AnalysisMethod caller, AnalysisMethod target, org.graalvm.compiler.graph.NodeSourcePosition srcPosition)
public void cleanupAfterAnalysis()
public AnalysisPolicy analysisPolicy()
public AnalysisContextPolicy<AnalysisContext> contextPolicy()
public AnalysisUniverse getUniverse()
public HostedProviders getProviders()
public AnalysisMetaAccess getMetaAccess()
public org.graalvm.compiler.nodes.spi.Replacements getReplacements()
public UnsupportedFeatures getUnsupportedFeatures()
public AnalysisType getObjectType()
public AnalysisType getObjectArrayType()
public AnalysisType getGraalNodeType()
public AnalysisType getGraalNodeListType()
public AnalysisType getThrowableType()
public AnalysisType getThreadType()
public AnalysisType forClass(Class<?> clazz)
public AnalysisType forClass(String className)
public TypeFlow<?> getAllInstantiatedTypeFlow()
public TypeFlow<?> getUnknownTypeFlow()
public TypeFlow<?> getAllSynchronizedTypeFlow()
public TypeState getAllSynchronizedTypeState()
public boolean executorIsStarted()
public AnalysisMethod addRootMethod(Executable method)
public AnalysisMethod addRootMethod(AnalysisMethod aMethod)
public AnalysisType addSystemClass(Class<?> clazz, boolean addFields, boolean addArrayClass)
public AnalysisType addSystemField(Class<?> clazz, String fieldName)
public AnalysisType addSystemStaticField(Class<?> clazz, String fieldName)
public void addSystemMethod(Class<?> clazz, String methodName, Class<?>... parameterTypes)
public final org.graalvm.compiler.api.replacements.SnippetReflectionProvider getSnippetReflectionProvider()
public final jdk.vm.ci.meta.ConstantReflectionProvider getConstantReflectionProvider()
public org.graalvm.compiler.core.common.spi.ConstantFieldProvider getConstantFieldProvider()
public CompletionExecutor getExecutor()
public abstract boolean isValidClassLoader(Object valueObj)
public void checkUserLimitations()
public void postFlow(TypeFlow<?> operation)
public void postTask(CompletionExecutor.DebugContextRunnable task)
public boolean finish()
throws InterruptedException
InterruptedExceptionpublic boolean doTypeflow()
throws InterruptedException
InterruptedExceptionpublic void checkUnsupportedSynchronization(AnalysisMethod method, int bci, AnalysisType aType)
method - - the method location of the synchronizationbci - - the bci location of the synchronizationaType - - the type that is synchronized onprotected void checkObjectGraph(ObjectScanner objectScanner)
objectScanner - public HostVM getHostVM()
public static ForkJoinPool createExecutor(org.graalvm.compiler.debug.DebugContext debug, int numberOfThreads)