public class AnalysisType extends Object implements WrappedJavaType, OriginalClassProvider, Comparable<AnalysisType>
| Modifier and Type | Class and Description |
|---|---|
static interface |
AnalysisType.InstanceFieldsInterceptor |
static class |
AnalysisType.UsageKind |
| Modifier and Type | Field and Description |
|---|---|
TypeState |
assignableTypesNonNullState |
TypeState |
assignableTypesState
Stores the list of all assignable types for each analysis type.
|
AllInstantiatedTypeFlow |
instantiatedTypes
Type flows containing all the instantiated sub-types.
|
AllInstantiatedTypeFlow |
instantiatedTypesNonNull |
protected AnalysisUniverse |
universe |
| Modifier and Type | Method and Description |
|---|---|
void |
addInstanceFieldsInterceptor(AnalysisType.InstanceFieldsInterceptor interceptor) |
void |
cleanupAfterAnalysis() |
void |
clearInstanceFieldsCache() |
int |
compareTo(AnalysisType other) |
boolean |
declaresDefaultMethods() |
void |
ensureInitialized() |
boolean |
equals(Object obj) |
jdk.vm.ci.meta.ResolvedJavaField |
findInstanceFieldWithOffset(long offset,
jdk.vm.ci.meta.JavaKind expectedKind) |
jdk.vm.ci.meta.Assumptions.AssumptionResult<jdk.vm.ci.meta.ResolvedJavaType> |
findLeafConcreteSubtype() |
AnalysisType |
findLeastCommonAncestor(jdk.vm.ci.meta.ResolvedJavaType otherType) |
AnalysisMethod |
findMethod(String name,
jdk.vm.ci.meta.Signature signature) |
jdk.vm.ci.meta.Assumptions.AssumptionResult<jdk.vm.ci.meta.ResolvedJavaMethod> |
findUniqueConcreteMethod(jdk.vm.ci.meta.ResolvedJavaMethod method) |
<T extends Annotation> |
getAnnotation(Class<T> annotationClass) |
Annotation[] |
getAnnotations() |
AnalysisType |
getArrayClass() |
AnalysisType |
getArrayClass(int dim) |
TypeState |
getAssignableTypes(boolean includeNull)
Returns the assignable types.
|
AnalysisObject |
getCachedConstantObject(PointsToAnalysis bb,
jdk.vm.ci.meta.JavaConstant constant) |
AnalysisMethod |
getClassInitializer() |
AnalysisType |
getComponentType() |
AnalysisObject |
getContextInsensitiveAnalysisObject() |
Annotation[] |
getDeclaredAnnotations() |
AnalysisMethod[] |
getDeclaredConstructors() |
AnalysisMethod[] |
getDeclaredMethods() |
jdk.vm.ci.meta.ResolvedJavaType |
getElementalType() |
AnalysisType |
getEnclosingType() |
jdk.vm.ci.meta.ResolvedJavaType |
getHostClass() |
int |
getId() |
AnalysisField[] |
getInstanceFields(boolean includeSuperclasses) |
AnalysisType[] |
getInterfaces() |
Class<?> |
getJavaClass() |
jdk.vm.ci.meta.JavaKind |
getJavaKind() |
int |
getModifiers() |
String |
getName() |
boolean |
getReachabilityListenerNotified() |
jdk.vm.ci.meta.ResolvedJavaType |
getSingleImplementor() |
String |
getSourceFileName() |
AnalysisField[] |
getStaticFields() |
jdk.vm.ci.meta.JavaKind |
getStorageKind()
The kind of the field in memory (in contrast to
AnalysisType.getJavaKind(), which is the kind of
the field on the Java type system level). |
Set<AnalysisType> |
getSubTypes()
Get the immediate subtypes, including this type itself.
|
AnalysisType |
getSuperclass() |
AllInstantiatedTypeFlow |
getTypeFlow(BigBang bb,
boolean includeNull) |
AnalysisObject |
getUniqueConstantObject() |
jdk.vm.ci.meta.ResolvedJavaType |
getWrapped() |
jdk.vm.ci.meta.ResolvedJavaType |
getWrappedWithoutResolve() |
boolean |
hasDefaultMethods() |
jdk.vm.ci.meta.Assumptions.AssumptionResult<Boolean> |
hasFinalizableSubclass() |
boolean |
hasFinalizer() |
int |
hashCode() |
boolean |
hasSubTypes() |
void |
initialize() |
boolean |
isAnnotation() |
boolean |
isArray() |
boolean |
isAssignableFrom(jdk.vm.ci.meta.ResolvedJavaType other) |
boolean |
isCloneableWithAllocation() |
boolean |
isEnum() |
boolean |
isInitialized() |
boolean |
isInstance(jdk.vm.ci.meta.JavaConstant obj) |
boolean |
isInstanceClass() |
boolean |
isInstantiated() |
boolean |
isInterface() |
boolean |
isLinked() |
boolean |
isLocal() |
boolean |
isMember() |
boolean |
isPrimitive() |
boolean |
isReachable() |
boolean |
isWordType()
Returns true if this type is part of the word type hierarchy, i.e, implements
WordBase. |
void |
link() |
boolean |
registerAsAllocated(org.graalvm.compiler.graph.Node node) |
void |
registerAsAssignable(BigBang bb)
Register the type as assignable with all its super types.
|
boolean |
registerAsInHeap() |
boolean |
registerAsReachable() |
void |
registerUnsafeAccessedField(AnalysisField field,
com.oracle.svm.util.UnsafePartitionKind partitionKind)
Add the field to the collection of unsafe accessed fields declared by this type.
|
void |
registerUnsafeFieldsRecomputed()
Says that all instance fields which hold offsets to unsafe field accesses are already
recomputed with the correct values from the substrate object layout and therefore don't need
a RecomputeFieldValue annotation.
|
AnalysisType |
resolve(jdk.vm.ci.meta.ResolvedJavaType accessingClass) |
AnalysisMethod |
resolveConcreteMethod(jdk.vm.ci.meta.ResolvedJavaMethod method)
Wrapper for resolveConcreteMethod() without the callerType parameter.
|
AnalysisMethod |
resolveConcreteMethod(jdk.vm.ci.meta.ResolvedJavaMethod method,
jdk.vm.ci.meta.ResolvedJavaType callerType) |
AnalysisMethod |
resolveMethod(jdk.vm.ci.meta.ResolvedJavaMethod method,
jdk.vm.ci.meta.ResolvedJavaType callerType) |
void |
setReachabilityListenerNotified(boolean reachabilityListenerNotified) |
String |
toString() |
List<AnalysisField> |
unsafeAccessedFields() |
List<AnalysisField> |
unsafeAccessedFields(com.oracle.svm.util.UnsafePartitionKind partitionKind) |
boolean |
unsafeFieldsRecomputed()
Returns true if all instance fields which hold offsets to unsafe field accesses are already
recomputed with the correct values from the substrate object layout.
|
static boolean |
verifyAssignableTypes(BigBang bb) |
clone, finalize, getClass, notify, notifyAll, wait, wait, waitisJavaLangObject, isLeaf, lookupType, resolveFieldgetUnqualifiedName, toClassName, toJavaName, toJavaNameisAbstract, isConcrete, isFinalFlagSet, isNative, isPackagePrivate, isPrivate, isProtected, isPublic, isStatic, isStrict, isSynchronized, isTransient, isVolatilegetAnnotationsByType, getDeclaredAnnotation, getDeclaredAnnotationsByType, isAnnotationPresentgetJavaClassprotected final AnalysisUniverse universe
public TypeState assignableTypesState
public TypeState assignableTypesNonNullState
public AllInstantiatedTypeFlow instantiatedTypes
public AllInstantiatedTypeFlow instantiatedTypesNonNull
public AnalysisType getArrayClass(int dim)
public void cleanupAfterAnalysis()
public int getId()
public AnalysisObject getContextInsensitiveAnalysisObject()
public AnalysisObject getUniqueConstantObject()
public AnalysisObject getCachedConstantObject(PointsToAnalysis bb, jdk.vm.ci.meta.JavaConstant constant)
public AllInstantiatedTypeFlow getTypeFlow(BigBang bb, boolean includeNull)
public TypeState getAssignableTypes(boolean includeNull)
public static boolean verifyAssignableTypes(BigBang bb)
public boolean registerAsInHeap()
public boolean registerAsAllocated(org.graalvm.compiler.graph.Node node)
node - For future use and debuggingpublic void registerAsAssignable(BigBang bb)
public boolean registerAsReachable()
public void ensureInitialized()
public boolean getReachabilityListenerNotified()
public void setReachabilityListenerNotified(boolean reachabilityListenerNotified)
public void registerUnsafeFieldsRecomputed()
public void registerUnsafeAccessedField(AnalysisField field, com.oracle.svm.util.UnsafePartitionKind partitionKind)
public List<AnalysisField> unsafeAccessedFields()
public List<AnalysisField> unsafeAccessedFields(com.oracle.svm.util.UnsafePartitionKind partitionKind)
public boolean isInstantiated()
public boolean unsafeFieldsRecomputed()
public boolean isReachable()
public final jdk.vm.ci.meta.JavaKind getStorageKind()
AnalysisType.getJavaKind(), which is the kind of
the field on the Java type system level). For example word types have a
AnalysisType.getJavaKind() of JavaKind.Object, but a primitive AnalysisType.storageKind.public boolean isWordType()
WordBase.public jdk.vm.ci.meta.ResolvedJavaType getWrapped()
getWrapped in interface WrappedElementgetWrapped in interface WrappedJavaTypepublic jdk.vm.ci.meta.ResolvedJavaType getWrappedWithoutResolve()
public Class<?> getJavaClass()
getJavaClass in interface OriginalClassProviderpublic final String getName()
getName in interface jdk.vm.ci.meta.JavaTypepublic final jdk.vm.ci.meta.JavaKind getJavaKind()
getJavaKind in interface jdk.vm.ci.meta.JavaTypepublic final AnalysisType resolve(jdk.vm.ci.meta.ResolvedJavaType accessingClass)
resolve in interface jdk.vm.ci.meta.JavaTypepublic final boolean hasFinalizer()
hasFinalizer in interface jdk.vm.ci.meta.ResolvedJavaTypepublic final jdk.vm.ci.meta.Assumptions.AssumptionResult<Boolean> hasFinalizableSubclass()
hasFinalizableSubclass in interface jdk.vm.ci.meta.ResolvedJavaTypepublic final boolean isInitialized()
isInitialized in interface jdk.vm.ci.meta.ResolvedJavaTypepublic void initialize()
initialize in interface jdk.vm.ci.meta.ResolvedJavaTypepublic final AnalysisType getArrayClass()
getArrayClass in interface jdk.vm.ci.meta.JavaTypegetArrayClass in interface jdk.vm.ci.meta.ResolvedJavaTypepublic boolean isInterface()
isInterface in interface jdk.vm.ci.meta.ModifiersProviderisInterface in interface jdk.vm.ci.meta.ResolvedJavaTypepublic boolean isEnum()
isEnum in interface jdk.vm.ci.meta.ResolvedJavaTypepublic boolean isInstanceClass()
isInstanceClass in interface jdk.vm.ci.meta.ResolvedJavaTypepublic boolean isArray()
isArray in interface jdk.vm.ci.meta.JavaTypepublic boolean isPrimitive()
isPrimitive in interface jdk.vm.ci.meta.ResolvedJavaTypepublic int getModifiers()
getModifiers in interface jdk.vm.ci.meta.ModifiersProviderpublic boolean isAssignableFrom(jdk.vm.ci.meta.ResolvedJavaType other)
isAssignableFrom in interface jdk.vm.ci.meta.ResolvedJavaTypepublic boolean isInstance(jdk.vm.ci.meta.JavaConstant obj)
isInstance in interface jdk.vm.ci.meta.ResolvedJavaTypepublic AnalysisType getSuperclass()
getSuperclass in interface jdk.vm.ci.meta.ResolvedJavaTypepublic AnalysisType[] getInterfaces()
getInterfaces in interface jdk.vm.ci.meta.ResolvedJavaTypepublic jdk.vm.ci.meta.ResolvedJavaType getSingleImplementor()
getSingleImplementor in interface jdk.vm.ci.meta.ResolvedJavaTypepublic Set<AnalysisType> getSubTypes()
public AnalysisType findLeastCommonAncestor(jdk.vm.ci.meta.ResolvedJavaType otherType)
findLeastCommonAncestor in interface jdk.vm.ci.meta.ResolvedJavaTypepublic jdk.vm.ci.meta.Assumptions.AssumptionResult<jdk.vm.ci.meta.ResolvedJavaType> findLeafConcreteSubtype()
findLeafConcreteSubtype in interface jdk.vm.ci.meta.ResolvedJavaTypepublic AnalysisType getComponentType()
getComponentType in interface jdk.vm.ci.meta.JavaTypegetComponentType in interface jdk.vm.ci.meta.ResolvedJavaTypepublic jdk.vm.ci.meta.ResolvedJavaType getElementalType()
getElementalType in interface jdk.vm.ci.meta.JavaTypegetElementalType in interface jdk.vm.ci.meta.ResolvedJavaTypepublic boolean hasSubTypes()
public AnalysisMethod resolveMethod(jdk.vm.ci.meta.ResolvedJavaMethod method, jdk.vm.ci.meta.ResolvedJavaType callerType)
resolveMethod in interface jdk.vm.ci.meta.ResolvedJavaTypepublic AnalysisMethod resolveConcreteMethod(jdk.vm.ci.meta.ResolvedJavaMethod method, jdk.vm.ci.meta.ResolvedJavaType callerType)
resolveConcreteMethod in interface jdk.vm.ci.meta.ResolvedJavaTypepublic AnalysisMethod resolveConcreteMethod(jdk.vm.ci.meta.ResolvedJavaMethod method)
public jdk.vm.ci.meta.Assumptions.AssumptionResult<jdk.vm.ci.meta.ResolvedJavaMethod> findUniqueConcreteMethod(jdk.vm.ci.meta.ResolvedJavaMethod method)
findUniqueConcreteMethod in interface jdk.vm.ci.meta.ResolvedJavaTypepublic jdk.vm.ci.meta.ResolvedJavaField findInstanceFieldWithOffset(long offset,
jdk.vm.ci.meta.JavaKind expectedKind)
findInstanceFieldWithOffset in interface jdk.vm.ci.meta.ResolvedJavaTypepublic void clearInstanceFieldsCache()
public AnalysisField[] getInstanceFields(boolean includeSuperclasses)
getInstanceFields in interface jdk.vm.ci.meta.ResolvedJavaTypepublic AnalysisField[] getStaticFields()
getStaticFields in interface jdk.vm.ci.meta.ResolvedJavaTypepublic Annotation[] getAnnotations()
getAnnotations in interface AnnotatedElementpublic Annotation[] getDeclaredAnnotations()
getDeclaredAnnotations in interface AnnotatedElementpublic <T extends Annotation> T getAnnotation(Class<T> annotationClass)
getAnnotation in interface AnnotatedElementpublic String getSourceFileName()
getSourceFileName in interface jdk.vm.ci.meta.ResolvedJavaTypepublic boolean isLocal()
isLocal in interface jdk.vm.ci.meta.ResolvedJavaTypepublic boolean isMember()
isMember in interface jdk.vm.ci.meta.ResolvedJavaTypepublic AnalysisType getEnclosingType()
getEnclosingType in interface jdk.vm.ci.meta.ResolvedJavaTypepublic AnalysisMethod[] getDeclaredConstructors()
getDeclaredConstructors in interface jdk.vm.ci.meta.ResolvedJavaTypepublic AnalysisMethod[] getDeclaredMethods()
getDeclaredMethods in interface jdk.vm.ci.meta.ResolvedJavaTypepublic AnalysisMethod findMethod(String name, jdk.vm.ci.meta.Signature signature)
findMethod in interface jdk.vm.ci.meta.ResolvedJavaTypepublic AnalysisMethod getClassInitializer()
getClassInitializer in interface jdk.vm.ci.meta.ResolvedJavaTypepublic boolean isLinked()
isLinked in interface jdk.vm.ci.meta.ResolvedJavaTypepublic void link()
link in interface jdk.vm.ci.meta.ResolvedJavaTypepublic boolean hasDefaultMethods()
hasDefaultMethods in interface jdk.vm.ci.meta.ResolvedJavaTypepublic boolean declaresDefaultMethods()
declaresDefaultMethods in interface jdk.vm.ci.meta.ResolvedJavaTypepublic boolean isCloneableWithAllocation()
isCloneableWithAllocation in interface jdk.vm.ci.meta.ResolvedJavaTypepublic jdk.vm.ci.meta.ResolvedJavaType getHostClass()
getHostClass in interface jdk.vm.ci.meta.ResolvedJavaTypepublic int compareTo(AnalysisType other)
compareTo in interface Comparable<AnalysisType>public boolean isAnnotation()
public void addInstanceFieldsInterceptor(AnalysisType.InstanceFieldsInterceptor interceptor)