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 |
---|---|
AllInstantiatedTypeFlow |
assignableTypes |
AllInstantiatedTypeFlow |
assignableTypesNonNull |
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) |
AnalysisObject |
getCachedConstantObject(BigBang 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() |
List<AnalysisType> |
getReferencedTypes(BigBang bb)
Returns the list of referenced types, i.e., concrete field types or array elements types
discovered by the static analysis.
|
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). |
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() |
void |
registerAsAllocated(org.graalvm.compiler.graph.Node node) |
void |
registerAsInHeap() |
void |
registerAsReachable() |
void |
registerUnsafeAccessedField(AnalysisField field,
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() that ignores 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(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 void |
updateAssignableTypes(BigBang bb) |
static boolean |
verifyAssignableTypes(BigBang bb) |
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
isJavaLangObject, isLeaf, lookupType, resolveField
getUnqualifiedName, toClassName, toJavaName, toJavaName
isAbstract, isConcrete, isFinalFlagSet, isNative, isPackagePrivate, isPrivate, isProtected, isPublic, isStatic, isStrict, isSynchronized, isTransient, isVolatile
getAnnotationsByType, getDeclaredAnnotation, getDeclaredAnnotationsByType, isAnnotationPresent
getJavaClass
protected final AnalysisUniverse universe
public volatile AllInstantiatedTypeFlow assignableTypes
public volatile AllInstantiatedTypeFlow assignableTypesNonNull
public AnalysisType getArrayClass(int dim)
public void cleanupAfterAnalysis()
public int getId()
public AnalysisObject getContextInsensitiveAnalysisObject()
public AnalysisObject getUniqueConstantObject()
public AnalysisObject getCachedConstantObject(BigBang bb, jdk.vm.ci.meta.JavaConstant constant)
public List<AnalysisType> getReferencedTypes(BigBang bb)
public AllInstantiatedTypeFlow getTypeFlow(BigBang bb, boolean includeNull)
public static boolean verifyAssignableTypes(BigBang bb)
public static void updateAssignableTypes(BigBang bb)
public void registerAsInHeap()
public void registerAsAllocated(org.graalvm.compiler.graph.Node node)
node
- For future use and debuggingpublic void registerAsReachable()
public void ensureInitialized()
public boolean getReachabilityListenerNotified()
public void setReachabilityListenerNotified(boolean reachabilityListenerNotified)
public void registerUnsafeFieldsRecomputed()
public void registerUnsafeAccessedField(AnalysisField field, UnsafePartitionKind partitionKind)
public List<AnalysisField> unsafeAccessedFields()
public List<AnalysisField> unsafeAccessedFields(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 WrappedElement
getWrapped
in interface WrappedJavaType
public jdk.vm.ci.meta.ResolvedJavaType getWrappedWithoutResolve()
public Class<?> getJavaClass()
getJavaClass
in interface OriginalClassProvider
public final String getName()
getName
in interface jdk.vm.ci.meta.JavaType
public final jdk.vm.ci.meta.JavaKind getJavaKind()
getJavaKind
in interface jdk.vm.ci.meta.JavaType
public final AnalysisType resolve(jdk.vm.ci.meta.ResolvedJavaType accessingClass)
resolve
in interface jdk.vm.ci.meta.JavaType
public final boolean hasFinalizer()
hasFinalizer
in interface jdk.vm.ci.meta.ResolvedJavaType
public final jdk.vm.ci.meta.Assumptions.AssumptionResult<Boolean> hasFinalizableSubclass()
hasFinalizableSubclass
in interface jdk.vm.ci.meta.ResolvedJavaType
public final boolean isInitialized()
isInitialized
in interface jdk.vm.ci.meta.ResolvedJavaType
public void initialize()
initialize
in interface jdk.vm.ci.meta.ResolvedJavaType
public final AnalysisType getArrayClass()
getArrayClass
in interface jdk.vm.ci.meta.JavaType
getArrayClass
in interface jdk.vm.ci.meta.ResolvedJavaType
public boolean isInterface()
isInterface
in interface jdk.vm.ci.meta.ModifiersProvider
isInterface
in interface jdk.vm.ci.meta.ResolvedJavaType
public boolean isEnum()
isEnum
in interface jdk.vm.ci.meta.ResolvedJavaType
public boolean isInstanceClass()
isInstanceClass
in interface jdk.vm.ci.meta.ResolvedJavaType
public boolean isArray()
isArray
in interface jdk.vm.ci.meta.JavaType
public boolean isPrimitive()
isPrimitive
in interface jdk.vm.ci.meta.ResolvedJavaType
public int getModifiers()
getModifiers
in interface jdk.vm.ci.meta.ModifiersProvider
public boolean isAssignableFrom(jdk.vm.ci.meta.ResolvedJavaType other)
isAssignableFrom
in interface jdk.vm.ci.meta.ResolvedJavaType
public boolean isInstance(jdk.vm.ci.meta.JavaConstant obj)
isInstance
in interface jdk.vm.ci.meta.ResolvedJavaType
public AnalysisType getSuperclass()
getSuperclass
in interface jdk.vm.ci.meta.ResolvedJavaType
public AnalysisType[] getInterfaces()
getInterfaces
in interface jdk.vm.ci.meta.ResolvedJavaType
public jdk.vm.ci.meta.ResolvedJavaType getSingleImplementor()
getSingleImplementor
in interface jdk.vm.ci.meta.ResolvedJavaType
public AnalysisType findLeastCommonAncestor(jdk.vm.ci.meta.ResolvedJavaType otherType)
findLeastCommonAncestor
in interface jdk.vm.ci.meta.ResolvedJavaType
public jdk.vm.ci.meta.Assumptions.AssumptionResult<jdk.vm.ci.meta.ResolvedJavaType> findLeafConcreteSubtype()
findLeafConcreteSubtype
in interface jdk.vm.ci.meta.ResolvedJavaType
public AnalysisType getComponentType()
getComponentType
in interface jdk.vm.ci.meta.JavaType
getComponentType
in interface jdk.vm.ci.meta.ResolvedJavaType
public jdk.vm.ci.meta.ResolvedJavaType getElementalType()
getElementalType
in interface jdk.vm.ci.meta.JavaType
getElementalType
in interface jdk.vm.ci.meta.ResolvedJavaType
public boolean hasSubTypes()
public AnalysisMethod resolveMethod(jdk.vm.ci.meta.ResolvedJavaMethod method, jdk.vm.ci.meta.ResolvedJavaType callerType)
resolveMethod
in interface jdk.vm.ci.meta.ResolvedJavaType
public AnalysisMethod resolveConcreteMethod(jdk.vm.ci.meta.ResolvedJavaMethod method)
public AnalysisMethod resolveConcreteMethod(jdk.vm.ci.meta.ResolvedJavaMethod method, jdk.vm.ci.meta.ResolvedJavaType callerType)
resolveConcreteMethod
in interface jdk.vm.ci.meta.ResolvedJavaType
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.ResolvedJavaType
public jdk.vm.ci.meta.ResolvedJavaField findInstanceFieldWithOffset(long offset, jdk.vm.ci.meta.JavaKind expectedKind)
findInstanceFieldWithOffset
in interface jdk.vm.ci.meta.ResolvedJavaType
public void clearInstanceFieldsCache()
public AnalysisField[] getInstanceFields(boolean includeSuperclasses)
getInstanceFields
in interface jdk.vm.ci.meta.ResolvedJavaType
public AnalysisField[] getStaticFields()
getStaticFields
in interface jdk.vm.ci.meta.ResolvedJavaType
public Annotation[] getAnnotations()
getAnnotations
in interface AnnotatedElement
public Annotation[] getDeclaredAnnotations()
getDeclaredAnnotations
in interface AnnotatedElement
public <T extends Annotation> T getAnnotation(Class<T> annotationClass)
getAnnotation
in interface AnnotatedElement
public String getSourceFileName()
getSourceFileName
in interface jdk.vm.ci.meta.ResolvedJavaType
public boolean isLocal()
isLocal
in interface jdk.vm.ci.meta.ResolvedJavaType
public boolean isMember()
isMember
in interface jdk.vm.ci.meta.ResolvedJavaType
public AnalysisType getEnclosingType()
getEnclosingType
in interface jdk.vm.ci.meta.ResolvedJavaType
public AnalysisMethod[] getDeclaredConstructors()
getDeclaredConstructors
in interface jdk.vm.ci.meta.ResolvedJavaType
public AnalysisMethod[] getDeclaredMethods()
getDeclaredMethods
in interface jdk.vm.ci.meta.ResolvedJavaType
public AnalysisMethod findMethod(String name, jdk.vm.ci.meta.Signature signature)
findMethod
in interface jdk.vm.ci.meta.ResolvedJavaType
public AnalysisMethod getClassInitializer()
getClassInitializer
in interface jdk.vm.ci.meta.ResolvedJavaType
public boolean isLinked()
isLinked
in interface jdk.vm.ci.meta.ResolvedJavaType
public void link()
link
in interface jdk.vm.ci.meta.ResolvedJavaType
public boolean hasDefaultMethods()
hasDefaultMethods
in interface jdk.vm.ci.meta.ResolvedJavaType
public boolean declaresDefaultMethods()
declaresDefaultMethods
in interface jdk.vm.ci.meta.ResolvedJavaType
public boolean isCloneableWithAllocation()
isCloneableWithAllocation
in interface jdk.vm.ci.meta.ResolvedJavaType
public jdk.vm.ci.meta.ResolvedJavaType getHostClass()
getHostClass
in interface jdk.vm.ci.meta.ResolvedJavaType
public int compareTo(AnalysisType other)
compareTo
in interface Comparable<AnalysisType>
public boolean isAnnotation()
public void addInstanceFieldsInterceptor(AnalysisType.InstanceFieldsInterceptor interceptor)