public final class RVMClass extends RVMType
This description is read from a ".class" file as classes/field/methods referenced by the running program need to be bound in to the running image.
RVMType
,
RVMArray
,
Primitive
,
UnboxedType
Modifier and Type | Field and Description |
---|---|
private boolean |
acyclic
Reference Count GC: is this type acyclic?
|
private int |
alignment
The desired alignment for instances of this type.
|
private Annotation[] |
annotations
Cached set of inherited and declared annotations.
|
private RVMMethod |
classInitializerMethod
Class initializer method, null if no method or if class is
initialized (ie class initializer method has been run)
|
private static boolean |
classLoadingDisabled
Flag for closed world testing
|
static ClassLoadingListener |
classLoadListener |
private int[] |
constantPool
The constant pool holds constants used by the class and the Java
bytecodes in the methods associated with this class.
|
private RVMMethod[] |
constructorMethods
constructor methods of class
|
private TypeReference[] |
declaredClasses
Declared inner classes, may be null
|
private RVMField[] |
declaredFields
Fields of this class
|
private RVMClass[] |
declaredInterfaces
Interfaces supported by this class
|
private RVMMethod[] |
declaredMethods
Methods of this class
|
private TypeReference |
declaringClass
The outer class, or null if this is not a inner/nested class
|
private boolean |
desiredAssertionStatus
Are assertions enabled on this class?
|
private TypeReference |
enclosingClass
The enclosing class if this is a local class
|
private MethodReference |
enclosingMethod
The enclosing method if this is a local class
|
private FieldLayoutContext |
fieldLayoutContext
A field layout helper - used to keep context regarding field layouts.
|
private boolean |
hasFinalizer
Do objects of this class have a finalizer method?
|
private IMT |
imt
The imt for this class
|
private boolean |
inBootImage
Is this class type in the bootimage?
|
private RVMField[] |
instanceFields
fields distinct for each instance of class
|
private int |
instanceSize
Total size of per-instance data, in bytes
|
private static int |
interfaceCount |
private static Object |
interfaceCountLock |
private int |
interfaceId |
private static RVMClass[] |
interfaces |
private short |
modifiers
|
(package private) RVMMethod[] |
noIMTConflictMap |
private Object[] |
objectCache
Set of objects that are cached here to ensure they are not collected by GC
|
private Atom |
signature
The signature is a string representing the generic type for this
class declaration, may be null
|
private Atom |
sourceName
Name of file .class file was compiled from, may be null
|
private byte |
state
current class-loading stage (loaded, resolved, instantiated,
initializing or initialized)
|
private RVMField[] |
staticFields
fields shared by all instances of class
|
private RVMMethod[] |
staticMethods
static methods of class
|
private RVMClass[] |
subClasses
Non-final list of sub-classes.
|
private RVMClass |
superClass
Super class of this class
|
private Offset |
thinLockOffset
At what offset is the thin lock word to be found in instances of
objects of this type?
|
private TIB |
typeInformationBlock
type and virtual method dispatch table for class
|
private RVMMethod[] |
virtualMethods
virtual methods of class
|
AddressArrayType, AddressType, BooleanType, ByteType, CharType, CodeArrayType, CodeType, depth, dimension, doesImplement, DoubleType, emptyVMClass, emptyVMField, emptyVMMethod, ExtentArrayType, ExtentType, FloatType, FunctionTableType, id, IMTType, IntType, ITableArrayType, ITableType, JavaIoSerializableType, JavaLangClassType, JavaLangCloneableType, JavaLangObjectArrayType, JavaLangObjectType, JavaLangRefReferenceReferenceField, JavaLangRefReferenceType, JavaLangStringType, JavaLangThrowableType, LinkageTripletTableType, LongType, MagicType, NOREFS_OFFSET_ARRAY, ObjectReferenceArrayType, ObjectReferenceType, OffsetArrayType, OffsetType, REFARRAY_OFFSET_ARRAY, referenceOffsets, ShortType, superclassIds, tibOffset, TIBType, typeRef, VoidType, WordArrayType, WordType
declaredAnnotationDatas
Constructor and Description |
---|
RVMClass(TypeReference typeRef,
int[] constantPool,
short modifiers,
RVMClass superClass,
RVMClass[] declaredInterfaces,
RVMField[] declaredFields,
RVMMethod[] declaredMethods,
TypeReference[] declaredClasses,
TypeReference declaringClass,
TypeReference enclosingClass,
MethodReference enclosingMethod,
Atom sourceName,
RVMMethod classInitializerMethod,
Atom signature,
RVMAnnotation[] annotations)
Construct a class from its constituent loaded parts
|
Modifier and Type | Method and Description |
---|---|
void |
addCachedObject(Object o) |
private void |
addSubClass(RVMClass sub) |
void |
allBootImageTypesResolved()
This method is only called by the bootimage writer.
|
private void |
assignInterfaceId() |
(package private) static Class<?> |
createReflectionClass(RVMMethod methodToCall)
Create a synthetic class that extends ReflectionBase and invokes the given method
|
boolean |
declaresFinalInstanceField()
Does this class directly define a final instance field (has implications for JMM).
|
RVMField |
findDeclaredField(Atom fieldName)
Find description of a field of this class.
|
RVMField |
findDeclaredField(Atom fieldName,
Atom fieldDescriptor)
Find description of a field of this class.
|
RVMMethod |
findDeclaredMethod(Atom methodName)
Find the first description of a method of this class.
|
RVMMethod |
findDeclaredMethod(Atom methodName,
Atom methodDescriptor)
Find description of a method of this class.
|
RVMMethod |
findInitializerMethod(Atom memberDescriptor)
Find specified initializer method description.
|
RVMMethod |
findMainMethod()
Find description of "public static void main(String[])"
method of this class.
|
RVMMethod |
findStaticMethod(Atom memberName,
Atom memberDescriptor)
Find specified static method description.
|
int |
getAlignment() |
RVMClass[] |
getAllImplementedInterfaces() |
(package private) Annotation[] |
getAnnotationsInternal() |
static RVMClass |
getClassFromStackFrame(int skip)
Used for accessibility checks in reflection code.
|
RVMMethod |
getClassInitializerMethod() |
static ClassLoader |
getClassLoaderFromStackFrame(int skip)
Support for user-written class loaders:
It's required to find the classloader of the class
whose method requires another class to be loaded;
the initiating loader of the required class is the
defining loader of the requiring class.
|
RVMMethod[] |
getConstructorMethods() |
TypeReference[] |
getDeclaredClasses() |
RVMField[] |
getDeclaredFields() |
RVMClass[] |
getDeclaredInterfaces() |
RVMMethod[] |
getDeclaredMethods() |
TypeReference |
getDeclaringClass() |
boolean |
getDesiredAssertionStatus()
Should assertions be enabled on this type?
|
int |
getDimensionality()
Number of [ in descriptor for arrays; -1 for primitives; 0 for
classes
|
int |
getDoesImplementBitMask() |
int |
getDoesImplementIndex() |
TypeReference |
getEnclosingClass() |
FieldLayoutContext |
getFieldLayoutContext() |
FieldReference |
getFieldRef(int constantPoolIndex) |
RVMField[] |
getInstanceFields() |
int |
getInstanceSize() |
int |
getInstanceSizeInternal() |
static RVMClass |
getInterface(int id) |
int |
getInterfaceId()
Classes used as Interfaces get assigned an interface id.
|
byte |
getLiteralDescription(int constantPoolIndex) |
Offset |
getLiteralOffset(int constantPoolIndex)
Get offset of a literal constant, in bytes.
|
int |
getMemoryBytes() |
MethodReference |
getMethodRef(int constantPoolIndex) |
int |
getModifiers()
Get the modifiers associated with this class
ClassLoaderConstants . |
int |
getNumberOfNonFinalReferences() |
String |
getPackageName()
Package name - something like "java.lang".
|
Atom |
getSignature() |
Atom |
getSourceName() |
int |
getStackWords()
Space required when this type is stored on the stack
(or as a field), in words.
|
RVMField[] |
getStaticFields() |
RVMMethod[] |
getStaticMethods() |
RVMClass[] |
getSubClasses() |
RVMClass |
getSuperClass() |
Offset |
getThinLockOffset() |
int |
getTypeDepth()
get number of superclasses to Object
0 java.lang.Object, Primitive, and Classes that are interfaces
1 for RVMArrays and classes that extend Object directly
|
TIB |
getTypeInformationBlock()
Runtime type information for this class type.
|
TypeReference |
getTypeRef(int constantPoolIndex) |
(package private) Atom |
getUtf(int constantPoolIndex) |
RVMMethod[] |
getVirtualMethods() |
boolean |
hasBridgeFromNativeAnnotation()
The methods of this class are only called from native code,
they are compiled with
a special prolog to interface with the native stack frame.
|
boolean |
hasDynamicBridgeAnnotation()
Should the methods of this class be compiled with special
register save/restore logic?
|
boolean |
hasFinalizer() |
boolean |
hasSaveVolatileAnnotation()
Should the methods of this class save incoming registers ?
|
void |
initialize()
Cause initialization to take place.
|
void |
instantiate()
Cause instantiation to take place.
|
boolean |
isAbstract() |
boolean |
isAcyclicReference()
Reference Count GC: Is a reference of this type contained in
another object inherently acyclic (without cycles)?
|
boolean |
isAnnotation() |
boolean |
isAnonymousClass() |
boolean |
isArrayType()
Is this an instance of RVMArray?
|
static boolean |
isClassLoadingDisabled() |
boolean |
isClassType()
Is this is an instance of RVMClass?
|
boolean |
isEnum() |
boolean |
isFinal() |
boolean |
isInBootImage()
Is this class part of the virtual machine's boot image?
|
boolean |
isInitialized()
Initialization status.
|
boolean |
isInstantiated()
Instantiation status.
|
boolean |
isInterface() |
boolean |
isLocalClass() |
boolean |
isMemberClass() |
boolean |
isPrimitiveType()
Is this a primitive type?
|
boolean |
isPublic() |
boolean |
isReferenceType()
Is this a reference type?
|
boolean |
isResolved()
Resolution status.
|
boolean |
isSpecial() |
boolean |
isSynthetic() |
boolean |
isThrowable() |
boolean |
isUnboxedType()
Is this an unboxed type?
|
void |
makeFieldTraced(RVMField field)
Make the passed field a traced field by garbage collection.
|
void |
markAsBootImageClass()
Only intended to be used by the BootImageWriter
|
private void |
markFinalFieldsAsLiterals()
Mark final fields as being available as literals
|
private void |
publishResolved(TIB allocatedTib,
short[] superclassIds,
int[] doesImplement)
Atomically initialize the important parts of the TIB and let the world know this type is
resolved.
|
void |
resolve()
Cause resolution to take place.
|
(package private) void |
resolveNativeMethods() |
private void |
resolveNativeMethodsInternal(RVMMethod[] methods) |
void |
setAlignment(int align) |
void |
setAllFinalStaticJTOCEntries()
Copy the values of all static final fields into
the JTOC.
|
static void |
setClassLoadingDisabled(boolean classLoadingDisabled)
Provides a way to disable and re-enable classloading for testing purposes.
|
void |
setFieldLayoutContext(FieldLayoutContext newLayout) |
private void |
setFinalStaticJTOCEntry(RVMField field,
Offset fieldOffset)
Inserts the value of a final static field into the JTOC.
|
void |
setIMT(IMT imt) |
void |
setInstanceSizeInternal(int size)
Set the size of the instance.
|
(package private) void |
setResolvedMembers()
Sets the resolvedMember in all declared members.
|
void |
setThinLockOffset(Offset offset)
Sets the thin lock offset for instances of this type.
|
String |
toString()
Name - something like "java.lang.String".
|
void |
unregisterNativeMethods()
Unregisters all native methods declared by "this".
|
void |
updateJTOCEntry(RVMMethod m)
Updates the JTOC slot for the given static method to point to
the current compiled code for the given method.
|
void |
updateMethod(RVMMethod m)
Given a method declared by this class, update all
dispatching tables to refer to the current compiled
code for the method.
|
void |
updateTIBEntry(RVMMethod m)
Updates this class's TIB entry for the given method to point to
the current compiled code for the given method.
|
void |
updateVirtualMethod(RVMMethod m)
Update the TIB entry's for all classes that inherit the given method
to point to the current compiled code for the given method.
|
asArray, asClass, asPrimitive, asUnboxedType, createClassForType, findVirtualMethod, getArrayTypeForElementType, getClassForType, getClassLoader, getDescriptor, getDoesImplement, getId, getMMAllocator, getReferenceOffsets, getResolvedClassForType, getSuperclassIds, getTIBMethodAtSlot, getTibOffset, getType, getTypeRef, hashCode, isAssignableFrom, isBooleanType, isByteType, isCharType, isDoubleType, isFloatType, isIntLikeType, isIntType, isJavaLangObjectType, isJavaLangStringType, isJavaLangThrowableType, isLongType, isNonMoving, isShortType, isVoidType, numTypes, setMMAllocator, setSpecializedMethod, updateArrayMethods
getAnnotation, getAnnotations, getDeclaredAnnotations, getDeclaredAnnotationsInternal, hasAnnotations, hasBaselineNoRegistersAnnotation, hasBaselineSaveLSRegistersAnnotation, hasInlineAnnotation, hasInterruptibleAnnotation, hasLogicallyUninterruptibleAnnotation, hasNoBoundsCheckAnnotation, hasNoCheckStoreAnnotation, hasNoEscapesAnnotation, hasNoInlineAnnotation, hasNonMovingAllocationAnnotation, hasNonMovingAnnotation, hasNoNullCheckAnnotation, hasNoOptCompileAnnotation, hasPreemptibleAnnotation, hasPureAnnotation, hasRuntimeFinalAnnotation, hasRuntimePureAnnotation, hasUninterruptibleAnnotation, hasUninterruptibleNoWarnAnnotation, hasUnpreemptibleAnnotation, hasUnpreemptibleNoWarnAnnotation, hasUntracedAnnotation, isAnnotationDeclared, isAnnotationPresent, readAnnotations, toAnnotations
clone, equals, finalize, getClass, notify, notifyAll, wait, wait, wait
getAnnotationsByType, getDeclaredAnnotation, getDeclaredAnnotationsByType
private static boolean classLoadingDisabled
private final int[] constantPool
ClassFileReader.readClass(org.jikesrvm.classloader.TypeReference, java.io.DataInputStream)
). The loaded
class' constant pool has 3 bits of type information (such as
(see ClassLoaderConstants.CP_INT
)), the rest of the int holds data as follows:
private final short modifiers
private final RVMClass superClass
private RVMClass[] subClasses
private final RVMClass[] declaredInterfaces
private final RVMField[] declaredFields
private final RVMMethod[] declaredMethods
private final TypeReference[] declaredClasses
private final TypeReference declaringClass
private final TypeReference enclosingClass
private final MethodReference enclosingMethod
private final Atom sourceName
private final Atom signature
private RVMMethod classInitializerMethod
private byte state
private RVMField[] staticFields
private RVMField[] instanceFields
private int instanceSize
private int alignment
private FieldLayoutContext fieldLayoutContext
private RVMMethod[] staticMethods
private RVMMethod[] constructorMethods
private RVMMethod[] virtualMethods
private boolean hasFinalizer
private TIB typeInformationBlock
private boolean inBootImage
private Offset thinLockOffset
private boolean acyclic
private Annotation[] annotations
private Object[] objectCache
private final boolean desiredAssertionStatus
public static final ClassLoadingListener classLoadListener
private static final Object interfaceCountLock
private static int interfaceCount
private static RVMClass[] interfaces
private int interfaceId
RVMMethod[] noIMTConflictMap
RVMClass(TypeReference typeRef, int[] constantPool, short modifiers, RVMClass superClass, RVMClass[] declaredInterfaces, RVMField[] declaredFields, RVMMethod[] declaredMethods, TypeReference[] declaredClasses, TypeReference declaringClass, TypeReference enclosingClass, MethodReference enclosingMethod, Atom sourceName, RVMMethod classInitializerMethod, Atom signature, RVMAnnotation[] annotations)
typeRef
- the type reference that was resolved to this classconstantPool
- array of ints encoding constant valuemodifiers
- ClassLoaderConstants
superClass
- parent of this classdeclaredInterfaces
- array of interfaces this class implementsdeclaredFields
- fields of the classdeclaredMethods
- methods of the classdeclaredClasses
- declared inner classesenclosingClass
- the class that this class is declared in (for inner classes)enclosingMethod
- the method that this class is declared in (for anonymous classes)declaringClass
- outer class if an inner classsourceName
- source file nameclassInitializerMethod
- handle to class initializer methodsignature
- the generic type name for this classannotations
- array of runtime visible annotationspublic String getPackageName()
public int getStackWords()
RVMType
getStackWords
in class RVMType
public int getMemoryBytes()
getMemoryBytes
in class RVMType
public boolean isInterface()
true
if "this" is an "interface" description rather than a "class" descriptionpublic boolean isPublic()
public boolean isFinal()
true
if "this" is non-subclassablepublic boolean isAbstract()
true
if "this" is non-instantiablepublic boolean isSpecial()
true
if "this" uses new-style "invokespecial" semantics for method calls in this classpublic boolean isSynthetic()
true
if "this" is not present in source code filepublic boolean isEnum()
true
if "this" is an enumerationpublic boolean isAnnotation()
true
if "this" is an annotation typepublic boolean isAnonymousClass()
true
if this is a representation of an anonymous classpublic boolean isLocalClass()
true
if this is a representation of a local class, ie
local to a block of code.public boolean isMemberClass()
true
if this is a representation of a member classpublic boolean isThrowable()
true
if this an object of this class could be assigned to Throwablepublic int getModifiers()
ClassLoaderConstants
.public Atom getSignature()
public Atom getSourceName()
null
--> "unknown - wasn't recorded by compiler").public RVMClass getSuperClass()
null
means "no superclass",
i.e. class is "java/lang/Object").public RVMClass[] getSubClasses()
public RVMClass[] getDeclaredInterfaces()
public RVMField[] getDeclaredFields()
public boolean declaresFinalInstanceField()
true
if this class declares a final instance fieldpublic RVMMethod[] getDeclaredMethods()
public TypeReference[] getDeclaredClasses()
public TypeReference getDeclaringClass()
null
if this is not an
inner/nested class.public TypeReference getEnclosingClass()
null
if this is not an
inner/nested class.void setResolvedMembers()
public RVMMethod getClassInitializerMethod()
null
-> no static initializer
or initializer already been run).Annotation[] getAnnotationsInternal()
getAnnotationsInternal
in class AnnotatedElement
public RVMField findDeclaredField(Atom fieldName, Atom fieldDescriptor)
fieldName
- field name - something like "foo"fieldDescriptor
- field descriptor - something like "I"null
--> not found)public RVMField findDeclaredField(Atom fieldName)
fieldName
- field name - something like "foo"null
--> not found)public RVMMethod findDeclaredMethod(Atom methodName, Atom methodDescriptor)
methodName
- method name - something like "foo"methodDescriptor
- method descriptor - something like "()I"public RVMMethod findDeclaredMethod(Atom methodName)
methodName
- method name - something like "foo"public RVMMethod findMainMethod()
null
--> not found)public void addCachedObject(Object o)
public Offset getLiteralOffset(int constantPoolIndex)
constantPoolIndex
- index into the constant poolpublic byte getLiteralDescription(int constantPoolIndex)
public TypeReference getTypeRef(int constantPoolIndex)
public MethodReference getMethodRef(int constantPoolIndex)
public FieldReference getFieldRef(int constantPoolIndex)
public boolean hasDynamicBridgeAnnotation()
true
if the methods needs special logic for
register saves and restoresDynamicBridge
public boolean hasBridgeFromNativeAnnotation()
true
if the methods of this class can only
be called from native codepublic boolean hasSaveVolatileAnnotation()
true
if all volatile registers need to be saved
when methods of this class are calledSaveVolatile
public boolean hasFinalizer()
hasFinalizer
in class RVMType
true
if this class overrides java.lang.Object.finalize()
public RVMField[] getStaticFields()
getStaticFields
in class RVMType
public RVMField[] getInstanceFields()
getInstanceFields
in class RVMType
public RVMMethod[] getStaticMethods()
getStaticMethods
in class RVMType
public RVMMethod[] getConstructorMethods()
<init>
) methods of this class.public RVMMethod[] getVirtualMethods()
getVirtualMethods
in class RVMType
public RVMClass[] getAllImplementedInterfaces()
public int getInstanceSize()
public int getInstanceSizeInternal()
public void setInstanceSizeInternal(int size)
size
- computed size for instances of this classpublic int getNumberOfNonFinalReferences()
public FieldLayoutContext getFieldLayoutContext()
public void setFieldLayoutContext(FieldLayoutContext newLayout)
public int getAlignment()
public void setAlignment(int align)
public RVMMethod findStaticMethod(Atom memberName, Atom memberDescriptor)
memberName
- method name - something like "foo"memberDescriptor
- method descriptor - something like "I" or "()I"public RVMMethod findInitializerMethod(Atom memberDescriptor)
memberDescriptor
- init method descriptor - something like "(I)V"public TIB getTypeInformationBlock()
getTypeInformationBlock
in class RVMType
public static ClassLoader getClassLoaderFromStackFrame(int skip)
skip
- specifies the number of frames back from the
caller to the method whose class's loader is requiredpublic static RVMClass getClassFromStackFrame(int skip)
skip
- Specifies the number of frames back from the
caller to the method whose class is requiredpublic boolean getDesiredAssertionStatus()
RVMType
getDesiredAssertionStatus
in class RVMType
public void resolve()
Side effects: superclasses and superinterfaces are resolved.
private void publishResolved(TIB allocatedTib, short[] superclassIds, int[] doesImplement)
allocatedTib
- The TIB that has been allocated for this typesuperclassIds
- The calculated superclass ids arraydoesImplement
- The calculated does implement arraypublic void allBootImageTypesResolved()
RVMType
RVMType.resolve()
has been called on all
bootimage types but before RVMType.instantiate()
has been called
on any bootimage type.
This provides a hook to compute various summaries that cannot be computed before types
are resolved.allBootImageTypesResolved
in class RVMType
public boolean isAcyclicReference()
RVMType
isAcyclicReference
in class RVMType
true
if the class is acyclic and
final (otherwise the reference could be to a subsequently loaded
cyclic subclass)private void setFinalStaticJTOCEntry(RVMField field, Offset fieldOffset)
field
- the field whose value we want to insertfieldOffset
- the field's offset in the JTOCpublic void instantiate()
Side effects: superclasses are instantiated.
instantiate
in class RVMType
public void makeFieldTraced(RVMField field)
field
- the field that we want to make tracedpublic void initialize() throws ExceptionInInitializerError
<clinit>
method to be executed.Side effects: superclasses are initialized, static fields receive initial values.
initialize
in class RVMType
ExceptionInInitializerError
private void markFinalFieldsAsLiterals()
public void setAllFinalStaticJTOCEntries()
void resolveNativeMethods()
private void resolveNativeMethodsInternal(RVMMethod[] methods)
public void unregisterNativeMethods()
private void addSubClass(RVMClass sub)
public void updateMethod(RVMMethod m)
m
- the method whose tables need to be updatedpublic void updateJTOCEntry(RVMMethod m)
m
- the method whose JTOC entry will be updatedpublic void updateTIBEntry(RVMMethod m)
NOTE: This method is intentionally not synchronized to avoid deadlocks. We instead rely on the fact that we are always updating the JTOC with the most recent instructions for the method.
m
- the method whose class' TIB entry will be updatedpublic void updateVirtualMethod(RVMMethod m)
NOTE: This method is intentionally not synchronized to avoid deadlocks. We instead rely on the fact that we are always updating the JTOC with the most recent instructions for the method.
m
- the methodpublic int getInterfaceId()
public int getDoesImplementIndex()
public int getDoesImplementBitMask()
public static RVMClass getInterface(int id)
private void assignInterfaceId()
public int getDimensionality()
getDimensionality
in class RVMType
public boolean isResolved()
RVMType
If the class/array has been "resolved", then size and offset information is available by which the compiler can generate code to access this class/array's fields/methods via direct loads/stores/calls (rather than generating code to access fields/methods symbolically, via dynamic linking stubs).
Primitives are always treated as "resolved".
isResolved
in class RVMType
true
when the class has been resolvedpublic boolean isInstantiated()
RVMType
If the class/array has been "instantiated", then all its methods have been compiled and its type information block has been placed in the JTOC.
Primitives are always treated as "instantiated".
isInstantiated
in class RVMType
true
when the class has been instantiatedpublic boolean isInitialized()
RVMType
If the class has been "initialized",
then its <clinit>
method has been executed.
Arrays have no <clinit>
methods so they become
"initialized" immediately upon "instantiation".
Primitives are always treated as "initialized".
isInitialized
in class RVMType
true
when the class has been initializedpublic void markAsBootImageClass()
RVMType
markAsBootImageClass
in class RVMType
public boolean isInBootImage()
RVMType
isInBootImage
in class RVMType
true
if the class is in the bootimagepublic Offset getThinLockOffset()
getThinLockOffset
in class RVMType
public void setThinLockOffset(Offset offset)
offset
- the offset for the thin lockpublic int getTypeDepth()
RVMType
getTypeDepth
in class RVMType
public boolean isClassType()
RVMType
isClassType
in class RVMType
true
public boolean isArrayType()
RVMType
isArrayType
in class RVMType
false
public boolean isPrimitiveType()
RVMType
isPrimitiveType
in class RVMType
false
public boolean isReferenceType()
RVMType
isReferenceType
in class RVMType
true
public boolean isUnboxedType()
RVMType
isUnboxedType
in class RVMType
false
public static boolean isClassLoadingDisabled()
public static void setClassLoadingDisabled(boolean classLoadingDisabled)
Note: General clients must not call this method.
classLoadingDisabled
- true
if classloading is to be disabled,
false
if it is to be enabledstatic Class<?> createReflectionClass(RVMMethod methodToCall)
methodToCall
- the method we wish to call reflectively