org.jikesrvm.objectmodel
Interface TIBLayoutConstants

All Known Subinterfaces:
ArchitectureSpecific.BaselineConstants, BaselineConstants, Constants, MiscHeaderConstants
All Known Implementing Classes:
AbstractMethod, ArchitectureSpecific.BaselineCompilerImpl, ArchitectureSpecific.BaselineExceptionDeliverer, ArchitectureSpecific.BaselineGCMapIterator, ArchitectureSpecific.JNICompiler, ArchitectureSpecific.JNIGCMapIterator, ArchitectureSpecific.LazyCompilationTrampoline, ArchitectureSpecific.OutOfLineMachineCode, ArchitectureSpecificOpt.AssemblerOpt, ArchitectureSpecificOpt.BaselineExecutionStateExtractor, ArchitectureSpecificOpt.CodeInstaller, ArchitectureSpecificOpt.OptExecutionStateExtractor, ArchitectureSpecificOpt.OptGCMapIterator, ArchitectureSpecificOpt.PostThreadSwitch, AssemblerBase, AssemblerDriver, AssemblerOpt, Barriers, BaselineCompiledMethod, BaselineCompilerImpl, BaselineExceptionDeliverer, BaselineExecutionStateExtractor, BaselineGCMapIterator, ClassFileReader, ClassLoaderProxy, CodeInstaller, Collection, CompilerDNA, ControllerMemory, CounterBasedSampling, DebugUtil, DynamicLinker, DynamicTypeCheck, ExecutionStateExtractor, GenerateMagic, Instruction, InterfaceInvocation, InterfaceMethodSignature, JNICompiler, JNIGCMapIterator, JSRInfo, LazyCompilationTrampoline, Lock, MiscHeader, NativeMethod, NormalMethod, ObjectModel, OnStackReplacementPlan, OptExecutionStateExtractor, OptGCMapIterator, OptGenericGCMapIterator, OptMachineCodeMap, OutOfLineMachineCode, PostThreadSwitch, Primitive, ReferenceMaps, Reflection, RuntimeCompiler, RuntimeEntrypoints, RVMArray, RVMClass, RVMClassLoader, RVMField, RVMMember, RVMMethod, RVMThread, RVMType, ScanThread, SpinLock, Statics, TableBasedDynamicLinker, TIB, UnboxedType, VM

public interface TIBLayoutConstants

Layout the TIB (Type Information Block).

  --------------------------------------------------------------------------------------------
                        Type Information Block (TIB) Layout Constants
  --------------------------------------------------------------------------------------------

                                 Object[] (type info block)        RVMType (class info)
                                    /                              /
            +--------------------+              +--------------+
            |    TIB pointer     |              |  TIB pointer |
            +--------------------+              +--------------+
            |      status        |              |    status    |
            +--------------------+              +--------------+
            |      length        |              |    field0    |
            +--------------------+              +--------------+
    TIB:  0:|       type         +------------> |     ...      |
            +--------------------+              +--------------+
          1:|   superclass ids   +-->           |   fieldN-1   |
            +--------------------+              +--------------+
          2:|  implements trits  +-->
            +--------------------+
          3:|  array element TIB +-->
            +--------------------+
          4:|     iTABLES/IMT    +-->
            +--------------------+
          5:|  specialized 0     +-->
            +--------------------+
            |       ...          +-->
            +--------------------+
         V0:|  virtual method 0  +-----+
            +--------------------+     |
            |       ...          |     |                         INSTRUCTION[] (machine code)
            +--------------------+     |                        /
       VN-1:| virtual method N-1 |     |        +--------------+
            +--------------------+     |        |  TIB pointer |
                                       |        +--------------+
                                       |        |    status    |
                                       |        +--------------+
                                       |        |    length    |
                                       |        +--------------+
                                       +------->|    code0     |
                                                +--------------+
                                                |      ...     |
                                                +--------------+
                                                |    codeN-1   |
                                                +--------------+

 


Field Summary
static int IMT_METHOD_SLOTS
          Number of slots reserved for interface method pointers.
static int NEEDS_DYNAMIC_LINK
          Special value returned by RVMClassLoader.getFieldOffset() or RVMClassLoader.getMethodOffset() to indicate fields or methods that must be accessed via dynamic linking code because their offset is not yet known or the class's static initializer has not yet been run.
static int TIB_ARRAY_ELEMENT_TIB_INDEX
          The TIB of the elements type of an array (may be null in fringe cases when element type couldn't be resolved during array resolution).
static int TIB_DOES_IMPLEMENT_INDEX
          Does this class implement the ith interface?
static int TIB_FIRST_SPECIALIZED_METHOD_INDEX
          A set of 0 or more specialized methods used in the VM such as for GC scanning.
static int TIB_FIRST_VIRTUAL_METHOD_INDEX
          Next group of slots point to virtual method code blocks (slots V1..VN in above diagram).
static int TIB_INTERFACE_DISPATCH_TABLE_INDEX
          A pointer to either an ITable or InterfaceMethodTable (IMT) depending on which dispatch implementation we are using.
static int TIB_SUPERCLASS_IDS_INDEX
          A vector of ids for classes that this one extends.
static int TIB_TYPE_INDEX
          First slot of TIB points to RVMType (slot 0 in above diagram).
 

Field Detail

IMT_METHOD_SLOTS

static final int IMT_METHOD_SLOTS
Number of slots reserved for interface method pointers.

See Also:
Constant Field Values

TIB_TYPE_INDEX

static final int TIB_TYPE_INDEX
First slot of TIB points to RVMType (slot 0 in above diagram).

See Also:
Constant Field Values

TIB_SUPERCLASS_IDS_INDEX

static final int TIB_SUPERCLASS_IDS_INDEX
A vector of ids for classes that this one extends. See DynamicTypeCheck.java

See Also:
Constant Field Values

TIB_DOES_IMPLEMENT_INDEX

static final int TIB_DOES_IMPLEMENT_INDEX
Does this class implement the ith interface? See DynamicTypeCheck.java

See Also:
Constant Field Values

TIB_ARRAY_ELEMENT_TIB_INDEX

static final int TIB_ARRAY_ELEMENT_TIB_INDEX
The TIB of the elements type of an array (may be null in fringe cases when element type couldn't be resolved during array resolution). Will be null when not an array.

See Also:
Constant Field Values

TIB_INTERFACE_DISPATCH_TABLE_INDEX

static final int TIB_INTERFACE_DISPATCH_TABLE_INDEX
A pointer to either an ITable or InterfaceMethodTable (IMT) depending on which dispatch implementation we are using.

See Also:
Constant Field Values

TIB_FIRST_SPECIALIZED_METHOD_INDEX

static final int TIB_FIRST_SPECIALIZED_METHOD_INDEX
A set of 0 or more specialized methods used in the VM such as for GC scanning.

See Also:
Constant Field Values

TIB_FIRST_VIRTUAL_METHOD_INDEX

static final int TIB_FIRST_VIRTUAL_METHOD_INDEX
Next group of slots point to virtual method code blocks (slots V1..VN in above diagram).


NEEDS_DYNAMIC_LINK

static final int NEEDS_DYNAMIC_LINK
Special value returned by RVMClassLoader.getFieldOffset() or RVMClassLoader.getMethodOffset() to indicate fields or methods that must be accessed via dynamic linking code because their offset is not yet known or the class's static initializer has not yet been run. We choose a value that will never match a valid jtoc-, instance-, or virtual method table- offset. Short.MIN_VALUE+1 is a good value:

See Also:
Constant Field Values