public abstract class AnalysisMethod extends Object implements WrappedJavaMethod, GraphProvider, OriginalMethodProvider
jdk.vm.ci.meta.ResolvedJavaMethod.ParameterGraphProvider.Purpose| Modifier and Type | Field and Description |
|---|---|
protected AnalysisMethod[] |
implementations
All concrete methods that can actually be called when calling this method.
|
jdk.vm.ci.meta.ResolvedJavaMethod |
wrapped |
| Constructor and Description |
|---|
AnalysisMethod(AnalysisUniverse universe,
jdk.vm.ci.meta.ResolvedJavaMethod wrapped) |
| Modifier and Type | Method and Description |
|---|---|
boolean |
allowRuntimeCompilation()
Returns true if a graph can be provided for
GraphProvider.Purpose.PREPARE_RUNTIME_COMPILATION. |
StackTraceElement |
asStackTraceElement(int bci) |
org.graalvm.compiler.nodes.StructuredGraph |
buildGraph(org.graalvm.compiler.debug.DebugContext debug,
jdk.vm.ci.meta.ResolvedJavaMethod method,
HostedProviders providers,
GraphProvider.Purpose purpose) |
boolean |
canBeInlined() |
boolean |
canBeStaticallyBound() |
void |
cleanupAfterAnalysis() |
AnalysisParsedGraph |
ensureGraphParsed(BigBang bb)
Ensures that the method has been parsed, i.e., that the
Graal IR for
the method is available. |
boolean |
equals(Object obj) |
org.graalvm.compiler.nodes.StructuredGraph |
getAnalyzedGraph()
Returns the
Graal IR for the method that has been processed by the
static analysis. |
<T extends Annotation> |
getAnnotation(Class<T> annotationClass) |
Annotation[] |
getAnnotations() |
Set<AnalysisMethod> |
getCallers()
Get the set of all callers for this method, as inferred by the static analysis.
|
byte[] |
getCode() |
int |
getCodeSize() |
jdk.vm.ci.meta.ConstantPool |
getConstantPool() |
Annotation[] |
getDeclaredAnnotations() |
AnalysisType |
getDeclaringClass() |
jdk.vm.ci.meta.Constant |
getEncoding() |
Object |
getEntryPointData() |
jdk.vm.ci.meta.ExceptionHandler[] |
getExceptionHandlers() |
Type[] |
getGenericParameterTypes() |
int |
getId() |
AnalysisMethod[] |
getImplementations() |
abstract List<jdk.vm.ci.code.BytecodePosition> |
getInvokeLocations()
Get the list of all invoke locations for this method, as inferred by the static analysis.
|
abstract Collection<InvokeInfo> |
getInvokes() |
Executable |
getJavaMethod() |
jdk.vm.ci.meta.LineNumberTable |
getLineNumberTable() |
jdk.vm.ci.meta.LocalVariableTable |
getLocalVariableTable() |
int |
getMaxLocals() |
int |
getMaxStackSize() |
int |
getModifiers() |
String |
getName() |
Annotation[][] |
getParameterAnnotations() |
jdk.vm.ci.meta.ResolvedJavaMethod.Parameter[] |
getParameters() |
abstract StackTraceElement[] |
getParsingContext() |
jdk.vm.ci.meta.ProfilingInfo |
getProfilingInfo(boolean includeNormal,
boolean includeOSR) |
String |
getQualifiedName() |
WrappedSignature |
getSignature() |
jdk.vm.ci.meta.SpeculationLog |
getSpeculationLog() |
jdk.vm.ci.meta.ResolvedJavaMethod |
getWrapped() |
int |
hashCode() |
boolean |
hasNeverInlineDirective() |
boolean |
isBridge() |
boolean |
isClassInitializer() |
boolean |
isConstructor() |
boolean |
isDefault() |
boolean |
isEntryPoint() |
boolean |
isImplementationInvoked()
Returns true if the method body can ever be executed.
|
boolean |
isIntrinsicMethod() |
boolean |
isInVirtualMethodTable(jdk.vm.ci.meta.ResolvedJavaType resolved) |
boolean |
isInvoked()
Returns true if this method is ever used as the target of a call site.
|
boolean |
isReachable() |
boolean |
isRootMethod() |
boolean |
isSimplyImplementationInvoked() |
boolean |
isSimplyInvoked() |
boolean |
isSynthetic() |
boolean |
isVarArgs() |
void |
registerAsEntryPoint(Object newEntryPointData) |
boolean |
registerAsImplementationInvoked() |
void |
registerAsInlined() |
void |
registerAsIntrinsicMethod()
Registers this method as intrinsified to Graal nodes via a
graph
builder plugin. |
boolean |
registerAsInvoked() |
boolean |
registerAsRootMethod()
Registers this method as a root for the analysis.
|
void |
reprofile() |
void |
setAnalyzedGraph(org.graalvm.compiler.nodes.StructuredGraph analyzedGraph) |
boolean |
shouldBeInlined() |
abstract void |
startTrackInvocations() |
String |
toString() |
clone, finalize, getClass, notify, notifyAll, wait, wait, waitgetParameterAnnotation, getParameterAnnotations, getProfilingInfo, hasBytecodes, hasReceiver, isFinal, isJavaLangObjectInit, toParameterTypesisAbstract, isConcrete, isFinalFlagSet, isInterface, isNative, isPackagePrivate, isPrivate, isProtected, isPublic, isStatic, isStrict, isSynchronized, isTransient, isVolatilegetAnnotationsByType, getDeclaredAnnotation, getDeclaredAnnotationsByType, isAnnotationPresentgetJavaMethodpublic final jdk.vm.ci.meta.ResolvedJavaMethod wrapped
protected AnalysisMethod[] implementations
public AnalysisMethod(AnalysisUniverse universe, jdk.vm.ci.meta.ResolvedJavaMethod wrapped)
public String getQualifiedName()
public void cleanupAfterAnalysis()
public abstract void startTrackInvocations()
public abstract Collection<InvokeInfo> getInvokes()
public abstract StackTraceElement[] getParsingContext()
public int getId()
public void registerAsIntrinsicMethod()
graph
builder plugin. Such a method is treated similar to an invoked method. For example, method
resolution must be able to find the method (otherwise the intrinsification would not work).public void registerAsEntryPoint(Object newEntryPointData)
public boolean registerAsInvoked()
public boolean registerAsImplementationInvoked()
public void registerAsInlined()
public Set<AnalysisMethod> getCallers()
public abstract List<jdk.vm.ci.code.BytecodePosition> getInvokeLocations()
public boolean isEntryPoint()
public Object getEntryPointData()
public boolean isIntrinsicMethod()
public boolean registerAsRootMethod()
AnalysisMethod.registerAsImplementationInvoked().public boolean isRootMethod()
public boolean isSimplyInvoked()
public boolean isSimplyImplementationInvoked()
public boolean isInvoked()
public boolean isImplementationInvoked()
public boolean isReachable()
public jdk.vm.ci.meta.ResolvedJavaMethod getWrapped()
getWrapped in interface WrappedElementgetWrapped in interface WrappedJavaMethodpublic String getName()
getName in interface jdk.vm.ci.meta.JavaMethodpublic WrappedSignature getSignature()
getSignature in interface jdk.vm.ci.meta.JavaMethodpublic org.graalvm.compiler.nodes.StructuredGraph buildGraph(org.graalvm.compiler.debug.DebugContext debug,
jdk.vm.ci.meta.ResolvedJavaMethod method,
HostedProviders providers,
GraphProvider.Purpose purpose)
buildGraph in interface GraphProviderpublic boolean allowRuntimeCompilation()
GraphProviderGraphProvider.Purpose.PREPARE_RUNTIME_COMPILATION. Note
that a manually generated graph must be able to provide the proper deoptimization entry
points and deoptimization frame states.allowRuntimeCompilation in interface GraphProviderpublic byte[] getCode()
getCode in interface jdk.vm.ci.meta.ResolvedJavaMethodpublic int getCodeSize()
getCodeSize in interface jdk.vm.ci.meta.ResolvedJavaMethodpublic AnalysisType getDeclaringClass()
getDeclaringClass in interface jdk.vm.ci.meta.JavaMethodgetDeclaringClass in interface jdk.vm.ci.meta.ResolvedJavaMethodpublic int getMaxLocals()
getMaxLocals in interface jdk.vm.ci.meta.ResolvedJavaMethodpublic int getMaxStackSize()
getMaxStackSize in interface jdk.vm.ci.meta.ResolvedJavaMethodpublic jdk.vm.ci.meta.ResolvedJavaMethod.Parameter[] getParameters()
getParameters in interface jdk.vm.ci.meta.ResolvedJavaMethodpublic int getModifiers()
getModifiers in interface jdk.vm.ci.meta.ModifiersProviderpublic boolean isSynthetic()
isSynthetic in interface jdk.vm.ci.meta.ResolvedJavaMethodpublic boolean isVarArgs()
isVarArgs in interface jdk.vm.ci.meta.ResolvedJavaMethodpublic boolean isBridge()
isBridge in interface jdk.vm.ci.meta.ResolvedJavaMethodpublic boolean isClassInitializer()
isClassInitializer in interface jdk.vm.ci.meta.ResolvedJavaMethodpublic boolean isConstructor()
isConstructor in interface jdk.vm.ci.meta.ResolvedJavaMethodpublic boolean canBeStaticallyBound()
canBeStaticallyBound in interface jdk.vm.ci.meta.ResolvedJavaMethodpublic AnalysisMethod[] getImplementations()
public jdk.vm.ci.meta.ExceptionHandler[] getExceptionHandlers()
getExceptionHandlers in interface jdk.vm.ci.meta.ResolvedJavaMethodpublic StackTraceElement asStackTraceElement(int bci)
asStackTraceElement in interface jdk.vm.ci.meta.ResolvedJavaMethodpublic jdk.vm.ci.meta.ProfilingInfo getProfilingInfo(boolean includeNormal,
boolean includeOSR)
getProfilingInfo in interface jdk.vm.ci.meta.ResolvedJavaMethodpublic jdk.vm.ci.meta.ConstantPool getConstantPool()
getConstantPool in interface jdk.vm.ci.meta.ResolvedJavaMethodpublic Annotation[] getAnnotations()
getAnnotations in interface AnnotatedElementpublic Annotation[] getDeclaredAnnotations()
getDeclaredAnnotations in interface AnnotatedElementpublic <T extends Annotation> T getAnnotation(Class<T> annotationClass)
getAnnotation in interface AnnotatedElementpublic Annotation[][] getParameterAnnotations()
getParameterAnnotations in interface jdk.vm.ci.meta.ResolvedJavaMethodpublic Type[] getGenericParameterTypes()
getGenericParameterTypes in interface jdk.vm.ci.meta.ResolvedJavaMethodpublic boolean canBeInlined()
canBeInlined in interface jdk.vm.ci.meta.ResolvedJavaMethodpublic boolean hasNeverInlineDirective()
hasNeverInlineDirective in interface jdk.vm.ci.meta.ResolvedJavaMethodpublic boolean shouldBeInlined()
shouldBeInlined in interface jdk.vm.ci.meta.ResolvedJavaMethodpublic jdk.vm.ci.meta.LineNumberTable getLineNumberTable()
getLineNumberTable in interface jdk.vm.ci.meta.ResolvedJavaMethodpublic jdk.vm.ci.meta.LocalVariableTable getLocalVariableTable()
getLocalVariableTable in interface jdk.vm.ci.meta.ResolvedJavaMethodpublic void reprofile()
reprofile in interface jdk.vm.ci.meta.ResolvedJavaMethodpublic jdk.vm.ci.meta.Constant getEncoding()
getEncoding in interface jdk.vm.ci.meta.ResolvedJavaMethodpublic boolean isInVirtualMethodTable(jdk.vm.ci.meta.ResolvedJavaType resolved)
isInVirtualMethodTable in interface jdk.vm.ci.meta.ResolvedJavaMethodpublic boolean isDefault()
isDefault in interface jdk.vm.ci.meta.ResolvedJavaMethodpublic jdk.vm.ci.meta.SpeculationLog getSpeculationLog()
getSpeculationLog in interface jdk.vm.ci.meta.ResolvedJavaMethodpublic Executable getJavaMethod()
getJavaMethod in interface OriginalMethodProviderpublic AnalysisParsedGraph ensureGraphParsed(BigBang bb)
Graal IR for
the method is available.public org.graalvm.compiler.nodes.StructuredGraph getAnalyzedGraph()
Graal IR for the method that has been processed by the
static analysis.public void setAnalyzedGraph(org.graalvm.compiler.nodes.StructuredGraph analyzedGraph)