org.jikesrvm.runtime
Class BootRecord

java.lang.Object
  extended by org.jikesrvm.runtime.BootRecord

public class BootRecord
extends Object

Information required to start the virtual machine and communicate with the outside world.

The virtual machine image consists entirely of java objects. The first java-object, the boot record, is the communication area between the host operating system and the virtual machine. It consists of read-only fields containing startup information used by the assembler bootstrap loader, by the virtual machine's initializer methods, and by the virtual machine's operating system call interface methods.

See also: BootImageWriter.main(), RunBootImage.C

The boot record looks like this (note that fields are layed out "backwards"):

                       lo-mem
                  +---------------+
                  |   fieldN-1    |
                  +---------------+
                  |     ...       |
                  +---------------+
                  |    field1     |
                  +---------------+
                  |    field0     |
                  +---------------+ \
                  |  tib pointer  |  |
                  +---------------+  | object header
                  |  lock word    |  |
                  +---------------+ /
                       hi-mem
 
The "spRegister" field of the boot record points to the word immediately preceeding the top of a stack object (ie. it's ready to accept a "push" instruction). The stack object is an array of words that looks like this:
                       lo-mem
                  +---------------+ \
                  |  tib pointer  |  |
                  +---------------+  | array
                  |  lock word    |  |   object
                  +---------------+  |      header
                  |    .length    |  |
                  +---------------+ /
                  |        |
                  +---------------+
                  |     ...       |
                  +---------------+
                  |        |
                  +---------------+
    spRegister ->      hi-mem
 

The "ipRegister" field of the boot record points to the first word of an array of machine instructions comprising the virtual machine's startoff code -- see "VM.boot()".

The "tocRegister" field of the boot record points to an array of words containing the static fields and method addresses of the virtual machine image -- see "Statics.slots[]".

The remaining fields of the boot record serve as a function linkage area between services residing in the host operating system and services residing in the virtual machine.


Field Summary
(package private)  int bootCompleted
          flag to indicate RVM has completed booting and ready to run Java programs added by Ton Ngo for JNI support
 Address bootImageCodeEnd
           
 Address bootImageCodeStart
           
 Address bootImageDataEnd
           
 Address bootImageDataStart
          address at which image is to be loaded into memory
 Address bootImageRMapEnd
           
 Address bootImageRMapStart
           
 Offset bootThreadOffset
          jtoc offset of RVMThread.bootThread
(package private)  Offset debugRequestedOffset
          jtoc offset of RVMThread.debugRequested
(package private)  Offset deliverHardwareExceptionOffset
          jtoc offset of RuntimeEntrypoints.deliverHardwareException()
 Offset dumpStackAndDieOffset
          jtoc offset of RVMThread.dumpStackAndDie(I)
(package private)  int externalSignalFlag
          an external signal has been sent e.g. kill -signalnumber processid
 Address gcspyDriverAddStreamIP
           
 Address gcspyDriverEndOutputIP
           
 Address gcspyDriverInitIP
           
 Address gcspyDriverInitOutputIP
           
 Address gcspyDriverResizeIP
           
 Address gcspyDriverSetTileNameIP
           
 Address gcspyDriverSetTileNameRangeIP
           
 Address gcspyDriverSpaceInfoIP
           
 Address gcspyDriverStartCommIP
           
 Address gcspyDriverStreamByteValueIP
           
 Address gcspyDriverStreamIntValueIP
           
 Address gcspyDriverStreamIP
           
 Address gcspyDriverStreamShortValueIP
           
 Address gcspyDriverSummaryIP
           
 Address gcspyDriverSummaryValueIP
           
 Address gcspyFormatSizeIP
           
 Address gcspyIntWriteControlIP
           
 Address gcspyMainServerAddDriverIP
           
 Address gcspyMainServerAddEventIP
           
 Address gcspyMainServerInitIP
           
 Address gcspyMainServerIsConnectedIP
           
 Address gcspyMainServerOuterLoopIP
           
 Address gcspyMainServerSafepointIP
           
 Address gcspyMainServerSetGeneralInfoIP
           
 Address gcspyMainServerStartCompensationTimerIP
           
 Address gcspyMainServerStopCompensationTimerIP
           
 Address gcspySprintfIP
           
 Address gcspyStartserverIP
           
 Address gcspyStreamInitIP
           
(package private)  int hardwareTrapMethodId
          method id for inserting stackframes at site of hardware traps
 AddressArray heapRanges
           
 Extent initialHeapSize
          initial size of heap
 Address ipRegister
           
 Extent maximumHeapSize
          maximum size of heap
 Address spRegister
           
 Address sysAccessIP
           
 Address sysArgIP
           
 Address sysBytesAvailableIP
           
 Address sysCallocIP
           
 Address sysConsoleWriteCharIP
           
 Address sysConsoleWriteDoubleIP
           
 Address sysConsoleWriteIntegerIP
           
 Address sysConsoleWriteLongIP
           
 Address sysCopyIP
           
 Address sysCreateThreadSpecificDataKeysIP
           
(package private)  Address sysCurrentTimeMillisIP
           
 Address sysDisableAlignmentCheckingIP
           
(package private)  Address sysDlopenIP
           
(package private)  Address sysDlsymIP
           
 Address sysDoubleRemainderIP
           
 Address sysDoubleToIntIP
           
 Address sysDoubleToLongIP
           
 Address sysEnableAlignmentCheckingIP
           
 Address sysExitIP
           
 Address sysFloatToIntIP
           
 Address sysFloatToLongIP
           
 Address sysFreeIP
           
 Address sysGetenvIP
           
 Address sysGetPageSizeIP
           
 Address sysGetThreadIdIP
           
 Address sysJavaVM
          address of JavaVM, used by JNI_OnLoad and JNIEnv.GetJavaVM, defined in Sys.C
 Address sysLongDivideIP
           
 Address sysLongRemainderIP
           
 Address sysLongToDoubleIP
           
 Address sysLongToFloatIP
           
 Address sysMallocIP
           
 Address sysMMapErrnoIP
           
 Address sysMMapIP
           
 Address sysMonitorBroadcastIP
           
 Address sysMonitorCreateIP
           
 Address sysMonitorDestroyIP
           
 Address sysMonitorEnterIP
           
 Address sysMonitorExitIP
           
 Address sysMonitorTimedWaitAbsoluteIP
           
 Address sysMonitorWaitIP
           
 Address sysMProtectIP
           
(package private)  Address sysNanoSleepIP
           
(package private)  Address sysNanoTimeIP
           
 Address sysNumProcessorsIP
           
 Address sysParseMemorySizeIP
           
 Address sysPerfEventCreateIP
           
 Address sysPerfEventDisableIP
           
 Address sysPerfEventEnableIP
           
 Address sysPerfEventInitIP
           
 Address sysPerfEventReadIP
           
 Address sysPrimitiveParseFloatIP
           
 Address sysPrimitiveParseIntIP
           
 Address sysReadByteIP
           
 Address sysReadBytesIP
           
 Address sysReportAlignmentCheckingIP
           
 Address sysSetFdCloseOnExecIP
           
 Address sysSetupHardwareTrapHandlerIP
           
 Address sysStashVMThreadIP
           
 Address sysStatIP
           
 Address sysSyncCacheIP
           
 Address sysSyncFileIP
           
 Address sysThreadBindIP
           
 Address sysThreadBindSupportedIP
           
 Address sysThreadCreateIP
           
 Address sysThreadTerminateIP
           
 Address sysThreadYieldIP
           
 Address sysVMMathAcosIP
           
 Address sysVMMathAsinIP
           
 Address sysVMMathAtan2IP
           
 Address sysVMMathAtanIP
           
 Address sysVMMathCbrtIP
           
 Address sysVMMathCeilIP
           
 Address sysVMMathCoshIP
           
 Address sysVMMathCosIP
           
 Address sysVMMathExpIP
           
 Address sysVMMathExpm1IP
           
 Address sysVMMathFloorIP
           
 Address sysVMMathHypotIP
           
 Address sysVMMathIEEEremainderIP
           
 Address sysVMMathLog10IP
           
 Address sysVMMathLog1pIP
           
 Address sysVMMathLogIP
           
 Address sysVMMathPowIP
           
 Address sysVMMathRintIP
           
 Address sysVMMathSinhIP
           
 Address sysVMMathSinIP
           
 Address sysVMMathSqrtIP
           
 Address sysVMMathTanhIP
           
 Address sysVMMathTanIP
           
 Address sysWriteByteIP
           
 Address sysWriteBytesIP
           
 Address sysZeroIP
           
 Address sysZeroNTIP
           
 Address sysZeroPagesIP
           
static BootRecord the_boot_record
          The following static field is initialized by the boot image writer.
 int tiRegister
           
 Address tocRegister
           
 int verboseBoot
          Verbosity level for booting set by -X:verboseBoot=
 
Constructor Summary
BootRecord()
           
 
Method Summary
 void setHeapRange(int id, Address start, Address end)
           
 void showHeapRanges()
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

the_boot_record

public static BootRecord the_boot_record
The following static field is initialized by the boot image writer. It allows the virtual machine to address the boot record using normal field access instructions (the assembler bootstrap function, on the other hand, simply addresses the boot record as the first object in the boot image).


bootImageDataStart

public Address bootImageDataStart
address at which image is to be loaded into memory


bootImageDataEnd

public Address bootImageDataEnd

bootImageCodeStart

public Address bootImageCodeStart

bootImageCodeEnd

public Address bootImageCodeEnd

bootImageRMapStart

public Address bootImageRMapStart

bootImageRMapEnd

public Address bootImageRMapEnd

initialHeapSize

public Extent initialHeapSize
initial size of heap


maximumHeapSize

public Extent maximumHeapSize
maximum size of heap


heapRanges

public AddressArray heapRanges

verboseBoot

public int verboseBoot
Verbosity level for booting set by -X:verboseBoot=


tiRegister

public int tiRegister

spRegister

public Address spRegister

ipRegister

public Address ipRegister

tocRegister

public Address tocRegister

bootCompleted

int bootCompleted
flag to indicate RVM has completed booting and ready to run Java programs added by Ton Ngo for JNI support


sysJavaVM

public Address sysJavaVM
address of JavaVM, used by JNI_OnLoad and JNIEnv.GetJavaVM, defined in Sys.C


hardwareTrapMethodId

int hardwareTrapMethodId
method id for inserting stackframes at site of hardware traps


deliverHardwareExceptionOffset

Offset deliverHardwareExceptionOffset
jtoc offset of RuntimeEntrypoints.deliverHardwareException()


dumpStackAndDieOffset

public Offset dumpStackAndDieOffset
jtoc offset of RVMThread.dumpStackAndDie(I)


bootThreadOffset

public Offset bootThreadOffset
jtoc offset of RVMThread.bootThread


debugRequestedOffset

Offset debugRequestedOffset
jtoc offset of RVMThread.debugRequested


externalSignalFlag

int externalSignalFlag
an external signal has been sent e.g. kill -signalnumber processid


sysConsoleWriteCharIP

public Address sysConsoleWriteCharIP

sysConsoleWriteIntegerIP

public Address sysConsoleWriteIntegerIP

sysConsoleWriteLongIP

public Address sysConsoleWriteLongIP

sysConsoleWriteDoubleIP

public Address sysConsoleWriteDoubleIP

sysExitIP

public Address sysExitIP

sysArgIP

public Address sysArgIP

sysGetenvIP

public Address sysGetenvIP

sysCopyIP

public Address sysCopyIP

sysMallocIP

public Address sysMallocIP

sysCallocIP

public Address sysCallocIP

sysFreeIP

public Address sysFreeIP

sysZeroNTIP

public Address sysZeroNTIP

sysZeroIP

public Address sysZeroIP

sysZeroPagesIP

public Address sysZeroPagesIP

sysSyncCacheIP

public Address sysSyncCacheIP

sysStatIP

public Address sysStatIP

sysReadByteIP

public Address sysReadByteIP

sysWriteByteIP

public Address sysWriteByteIP

sysReadBytesIP

public Address sysReadBytesIP

sysWriteBytesIP

public Address sysWriteBytesIP

sysBytesAvailableIP

public Address sysBytesAvailableIP

sysSyncFileIP

public Address sysSyncFileIP

sysSetFdCloseOnExecIP

public Address sysSetFdCloseOnExecIP

sysAccessIP

public Address sysAccessIP

sysMMapIP

public Address sysMMapIP

sysMMapErrnoIP

public Address sysMMapErrnoIP

sysMProtectIP

public Address sysMProtectIP

sysGetPageSizeIP

public Address sysGetPageSizeIP

sysNumProcessorsIP

public Address sysNumProcessorsIP

sysThreadBindSupportedIP

public Address sysThreadBindSupportedIP

sysThreadBindIP

public Address sysThreadBindIP

sysThreadCreateIP

public Address sysThreadCreateIP

sysThreadYieldIP

public Address sysThreadYieldIP

sysGetThreadIdIP

public Address sysGetThreadIdIP

sysSetupHardwareTrapHandlerIP

public Address sysSetupHardwareTrapHandlerIP

sysStashVMThreadIP

public Address sysStashVMThreadIP

sysThreadTerminateIP

public Address sysThreadTerminateIP

sysMonitorCreateIP

public Address sysMonitorCreateIP

sysMonitorDestroyIP

public Address sysMonitorDestroyIP

sysMonitorEnterIP

public Address sysMonitorEnterIP

sysMonitorExitIP

public Address sysMonitorExitIP

sysMonitorTimedWaitAbsoluteIP

public Address sysMonitorTimedWaitAbsoluteIP

sysMonitorWaitIP

public Address sysMonitorWaitIP

sysMonitorBroadcastIP

public Address sysMonitorBroadcastIP

sysLongDivideIP

public Address sysLongDivideIP

sysLongRemainderIP

public Address sysLongRemainderIP

sysLongToFloatIP

public Address sysLongToFloatIP

sysLongToDoubleIP

public Address sysLongToDoubleIP

sysFloatToIntIP

public Address sysFloatToIntIP

sysDoubleToIntIP

public Address sysDoubleToIntIP

sysFloatToLongIP

public Address sysFloatToLongIP

sysDoubleToLongIP

public Address sysDoubleToLongIP

sysDoubleRemainderIP

public Address sysDoubleRemainderIP

sysPrimitiveParseFloatIP

public Address sysPrimitiveParseFloatIP

sysPrimitiveParseIntIP

public Address sysPrimitiveParseIntIP

sysParseMemorySizeIP

public Address sysParseMemorySizeIP

sysCurrentTimeMillisIP

Address sysCurrentTimeMillisIP

sysNanoTimeIP

Address sysNanoTimeIP

sysNanoSleepIP

Address sysNanoSleepIP

sysDlopenIP

Address sysDlopenIP

sysDlsymIP

Address sysDlsymIP

sysCreateThreadSpecificDataKeysIP

public Address sysCreateThreadSpecificDataKeysIP

sysVMMathSinIP

public Address sysVMMathSinIP

sysVMMathCosIP

public Address sysVMMathCosIP

sysVMMathTanIP

public Address sysVMMathTanIP

sysVMMathAsinIP

public Address sysVMMathAsinIP

sysVMMathAcosIP

public Address sysVMMathAcosIP

sysVMMathAtanIP

public Address sysVMMathAtanIP

sysVMMathAtan2IP

public Address sysVMMathAtan2IP

sysVMMathCoshIP

public Address sysVMMathCoshIP

sysVMMathSinhIP

public Address sysVMMathSinhIP

sysVMMathTanhIP

public Address sysVMMathTanhIP

sysVMMathExpIP

public Address sysVMMathExpIP

sysVMMathLogIP

public Address sysVMMathLogIP

sysVMMathSqrtIP

public Address sysVMMathSqrtIP

sysVMMathPowIP

public Address sysVMMathPowIP

sysVMMathIEEEremainderIP

public Address sysVMMathIEEEremainderIP

sysVMMathCeilIP

public Address sysVMMathCeilIP

sysVMMathFloorIP

public Address sysVMMathFloorIP

sysVMMathRintIP

public Address sysVMMathRintIP

sysVMMathCbrtIP

public Address sysVMMathCbrtIP

sysVMMathExpm1IP

public Address sysVMMathExpm1IP

sysVMMathHypotIP

public Address sysVMMathHypotIP

sysVMMathLog10IP

public Address sysVMMathLog10IP

sysVMMathLog1pIP

public Address sysVMMathLog1pIP

sysEnableAlignmentCheckingIP

public Address sysEnableAlignmentCheckingIP

sysDisableAlignmentCheckingIP

public Address sysDisableAlignmentCheckingIP

sysReportAlignmentCheckingIP

public Address sysReportAlignmentCheckingIP

gcspyDriverAddStreamIP

public Address gcspyDriverAddStreamIP

gcspyDriverEndOutputIP

public Address gcspyDriverEndOutputIP

gcspyDriverInitIP

public Address gcspyDriverInitIP

gcspyDriverInitOutputIP

public Address gcspyDriverInitOutputIP

gcspyDriverResizeIP

public Address gcspyDriverResizeIP

gcspyDriverSetTileNameRangeIP

public Address gcspyDriverSetTileNameRangeIP

gcspyDriverSetTileNameIP

public Address gcspyDriverSetTileNameIP

gcspyDriverSpaceInfoIP

public Address gcspyDriverSpaceInfoIP

gcspyDriverStartCommIP

public Address gcspyDriverStartCommIP

gcspyDriverStreamIP

public Address gcspyDriverStreamIP

gcspyDriverStreamByteValueIP

public Address gcspyDriverStreamByteValueIP

gcspyDriverStreamShortValueIP

public Address gcspyDriverStreamShortValueIP

gcspyDriverStreamIntValueIP

public Address gcspyDriverStreamIntValueIP

gcspyDriverSummaryIP

public Address gcspyDriverSummaryIP

gcspyDriverSummaryValueIP

public Address gcspyDriverSummaryValueIP

gcspyIntWriteControlIP

public Address gcspyIntWriteControlIP

gcspyMainServerAddDriverIP

public Address gcspyMainServerAddDriverIP

gcspyMainServerAddEventIP

public Address gcspyMainServerAddEventIP

gcspyMainServerInitIP

public Address gcspyMainServerInitIP

gcspyMainServerIsConnectedIP

public Address gcspyMainServerIsConnectedIP

gcspyMainServerOuterLoopIP

public Address gcspyMainServerOuterLoopIP

gcspyMainServerSafepointIP

public Address gcspyMainServerSafepointIP

gcspyMainServerSetGeneralInfoIP

public Address gcspyMainServerSetGeneralInfoIP

gcspyMainServerStartCompensationTimerIP

public Address gcspyMainServerStartCompensationTimerIP

gcspyMainServerStopCompensationTimerIP

public Address gcspyMainServerStopCompensationTimerIP

gcspyStartserverIP

public Address gcspyStartserverIP

gcspyStreamInitIP

public Address gcspyStreamInitIP

gcspyFormatSizeIP

public Address gcspyFormatSizeIP

gcspySprintfIP

public Address gcspySprintfIP

sysPerfEventInitIP

public Address sysPerfEventInitIP

sysPerfEventCreateIP

public Address sysPerfEventCreateIP

sysPerfEventEnableIP

public Address sysPerfEventEnableIP

sysPerfEventDisableIP

public Address sysPerfEventDisableIP

sysPerfEventReadIP

public Address sysPerfEventReadIP
Constructor Detail

BootRecord

public BootRecord()
Method Detail

showHeapRanges

public void showHeapRanges()

setHeapRange

public void setHeapRange(int id,
                         Address start,
                         Address end)