-
name
String name
The name of the class this hub is representing, as defined in
Class.getName()
.
-
hubType
int hubType
Used to quickly determine in which category a certain hub falls (e.g., instance or array).
-
referenceType
byte referenceType
Used to quickly determine if this class is a subclass of
Reference
.
-
layoutEncoding
int layoutEncoding
-
typeID
int typeID
Unique id number for this type, used for fast type checks and type casts.
-
typeCheckStart
short typeCheckStart
-
typeCheckRange
short typeCheckRange
The number of ids which are in valid range for a type check.
-
typeCheckSlot
short typeCheckSlot
The value slot within the type id slot array to read when comparing against this type.
-
monitorOffset
int monitorOffset
The offset of the synthetic field which stores whatever is used for monitorEnter/monitorExit
by an instance of this class. If 0, then instances of this class can not be locked.
A class has a monitor field if an instance of this class may be an argument to a
"synchronized" statement. The current implementation stores a reference to a
ReentrantLock
, which will be allocated the first time an
instance is locked.
-
hashCodeOffset
int hashCodeOffset
The offset of the synthetic hash-code field which stores the identity hash-code for an
instance of the class.
If 0, the class has no hash-code field. A class has a hash-code field if an instance of this
class may be a parameter to System.identityHashCode(Object)
or the this-parameter to
Object.hashCode()
. It stores a random hash-code, which is generated at the first call
to one of those methods.
-
isLocalClass
boolean isLocalClass
-
isInstantiated
boolean isInstantiated
Has the type been discovered as instantiated by the static analysis?
-
isAnonymousClass
Object isAnonymousClass
Boolean value or exception that happend at image-build time.
-
isHidden
boolean isHidden
Is this a Hidden Class (Since JDK 15).
-
isRecord
boolean isRecord
Is this a Record Class (Since JDK 15).
-
assertionStatus
boolean assertionStatus
-
modifiers
int modifiers
-
superHub
DynamicHub superHub
The hub for the superclass, or null if an interface or primitive type.
- See Also:
Class.getSuperclass()
-
componentHub
DynamicHub componentHub
The hub for the component type of an array, or null if this hub is not an array hub.
- See Also:
Class.getComponentType()
-
arrayHub
DynamicHub arrayHub
The hub for an array of this type, or null if the array type has been determined as
uninstantiated by the static analysis.
-
enclosingClass
DynamicHub enclosingClass
The hub for the enclosing class, or null if no enclosing class.
The value is lazily initialized to break cycles. But it is initialized during static
analysis, so we do not have to annotate is as an UnknownObjectField
.
- See Also:
Class.getEnclosingClass()
-
interfacesEncoding
Object interfacesEncoding
The interfaces that this class implements. Either null (no interfaces), a
DynamicHub
(one interface), or a
DynamicHub
[] array (more than one interface).
-
assignableFromMatches
int[] assignableFromMatches
-
enumConstantsReference
Object enumConstantsReference
Reference to a list of enum values for subclasses of
Enum
; null otherwise.
-
referenceMapIndex
int referenceMapIndex
-
metaType
SharedType metaType
Back link to the SubstrateType used by the substrate meta access. Only used for the subset of
types for which a SubstrateType exists.
-
sourceFileName
String sourceFileName
Source file name if known; null otherwise.
-
annotationsEncoding
Object annotationsEncoding
The annotations of this class. This field holds either null (no annotations), an Annotation
(one annotation), or an Annotation[] array (more than one annotation). This eliminates the
need for an array for the case that there are less than two annotations.
-
hasDefaultMethods
boolean hasDefaultMethods
Class/superclass/implemented interfaces has default methods. Necessary metadata for class
initialization, but even for classes/interfaces that are already initialized during image
generation, so it cannot be a field in
ClassInitializationInfo
.
-
declaresDefaultMethods
boolean declaresDefaultMethods
Directly declares default methods. Necessary metadata for class initialization, but even for
interfaces that are already initialized during image generation, so it cannot be a field in
ClassInitializationInfo
.
-
classInitializationInfo
ClassInitializationInfo classInitializationInfo
Metadata for running class initializers at run time. Refers to a singleton marker object for
classes/interfaces already initialized during image generation, i.e., this field is never
null at run time.
-
classLoader
ClassLoader classLoader
Classloader used for loading this class during image-build time.
-
instanceOfBits
BitSet instanceOfBits
Bits used for instance-of checks. A bit is set for each type, which an object with this HUB
is an instance of.
This set only includes types for which no trivial type-ID range check can be done, i.e.
interface types, which are "distributed" over the type hierarchy. Therefore this bit-set is
relatively small (usually < 64 bits).
This bit-set is directly located in the layout of DynamicHub
(see Hybrid
). It
is accessed in the instance-of snippet with ObjectAccess
.
-
typeCheckSlots
short[] typeCheckSlots
Array containing this type's type check id information. During a type check, a requested
column of this array is read to determine if this value fits within the range of ids which
match the assignee's type.
-
vtable
org.graalvm.nativeimage.c.function.CFunctionPointer[] vtable
-
genericInfo
GenericInfo genericInfo
-
annotatedSuperInfo
AnnotatedSuperInfo annotatedSuperInfo
-
module
Object module
Field used for module information access at run-time The run time type of this field is
java.lang.Module but can be casted to
Target_java_lang_Module
The module is of type
Object to avoid ClassCastExceptions at image build time due to base module miss-match.
-
nestHost
Class<T> nestHost
JDK 11 and later: the class that serves as the host for the nest. All nestmates have the same
host.
-
packageNameReference
LazyFinalReference<T> packageNameReference
Final fields in subsituted classes are treated as implicitly RecomputeFieldValue even when
not annotated with @RecomputeFieldValue. Their name must not match a field in the original
class, i.e., packageName.
-
rd
DynamicHub.ReflectionData rd