org.jikesrvm.ia32
Class MachineSpecificIA

java.lang.Object
  extended by org.jikesrvm.MachineSpecific
      extended by org.jikesrvm.ia32.MachineSpecificIA
All Implemented Interfaces:
ArchConstants, RegisterConstants, StackframeLayoutConstants, TrapConstants
Direct Known Subclasses:
MachineSpecificIA.EM64T, MachineSpecificIA.IA32

public abstract class MachineSpecificIA
extends MachineSpecific
implements ArchConstants

Wrappers around IA32-specific code common to both 32 & 64 bit


Nested Class Summary
static class MachineSpecificIA.EM64T
          Wrappers around EMT64-specific code (64-bit specific)
static class MachineSpecificIA.IA32
          Wrappers around IA32-specific code (32-bit specific)
 
Nested classes/interfaces inherited from interface org.jikesrvm.ia32.RegisterConstants
RegisterConstants.FloatingPointMachineRegister, RegisterConstants.FPR, RegisterConstants.GPR, RegisterConstants.MachineRegister, RegisterConstants.MM, RegisterConstants.XMM
 
Field Summary
(package private) static int FPUControlWord
          A well-known memory location used to manipulate the FPU control word.
 
Fields inherited from interface org.jikesrvm.ia32.ArchConstants
SSE2_BASE, SSE2_FULL
 
Fields inherited from interface org.jikesrvm.ia32.StackframeLayoutConstants
BYTES_IN_STACKSLOT, FPU_STATE_SIZE, INVISIBLE_METHOD_ID, LOG_BYTES_IN_STACKSLOT, STACK_SIZE_BOOT, STACK_SIZE_COLLECTOR, STACK_SIZE_DLOPEN, STACK_SIZE_GCDISABLED, STACK_SIZE_GROW, STACK_SIZE_GUARD, STACK_SIZE_JNINATIVE_GROW, STACK_SIZE_MAX, STACK_SIZE_NORMAL, STACK_SIZE_SYSCALL, STACKFRAME_ALIGNMENT, STACKFRAME_BODY_OFFSET, STACKFRAME_FRAME_POINTER_OFFSET, STACKFRAME_HEADER_SIZE, STACKFRAME_METHOD_ID_OFFSET, STACKFRAME_RETURN_ADDRESS_OFFSET, STACKFRAME_SENTINEL_FP, XMM_STATE_SIZE
 
Fields inherited from interface org.jikesrvm.ia32.RegisterConstants
ALL_FPRS, ALL_GPRS, EAX, EBP, EBX, ECX, EDI, EDX, ESI, ESP, FP0, FP1, FP2, FP3, FP4, FP5, FP6, FP7, INSTRUCTION_WIDTH, LG_INSTRUCTION_WIDTH, MM0, MM1, MM10, MM11, MM12, MM13, MM14, MM15, MM2, MM3, MM4, MM5, MM6, MM7, MM8, MM9, NATIVE_NONVOLATILE_FPRS, NATIVE_NONVOLATILE_GPRS, NATIVE_PARAMETER_FPRS, NATIVE_PARAMETER_GPRS, NATIVE_VOLATILE_FPRS, NATIVE_VOLATILE_GPRS, NONVOLATILE_FPRS, NONVOLATILE_GPRS, NUM_FPRS, NUM_GPRS, NUM_NONVOLATILE_FPRS, NUM_NONVOLATILE_GPRS, NUM_PARAMETER_FPRS, NUM_PARAMETER_GPRS, NUM_RETURN_FPRS, NUM_RETURN_GPRS, NUM_VOLATILE_FPRS, NUM_VOLATILE_GPRS, PARAMETER_FPRS, PARAMETER_GPRS, R0, R1, R10, R11, R12, R13, R14, R15, R2, R3, R4, R5, R6, R7, R8, R9, RETURN_FPRS, RETURN_GPRS, STACK_POINTER, THREAD_REGISTER, VOLATILE_FPRS, VOLATILE_GPRS, XMM0, XMM1, XMM10, XMM11, XMM12, XMM13, XMM14, XMM15, XMM2, XMM3, XMM4, XMM5, XMM6, XMM7, XMM8, XMM9
 
Fields inherited from interface org.jikesrvm.ia32.TrapConstants
RVM_TRAP_BASE
 
Constructor Summary
MachineSpecificIA()
           
 
Method Summary
 void adjustESP(ArchitectureSpecific.Registers registers, Offset delta, boolean traceAdjustments)
          A thread's stack has been moved or resized.
 void baselineEmitLoadTIB(ArchitectureSpecific.Assembler asm, int dest, int object, Offset tibOffset)
          The following method will emit code that moves a reference to an object's TIB into a destination register.
 void initializeStack(ArchitectureSpecific.Registers contextRegisters, Address ip, Address sp)
          The following method initializes a thread stack as if "startoff" method had been called by an empty baseline-compiled "sentinel" frame with one local variable.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

FPUControlWord

static int FPUControlWord
A well-known memory location used to manipulate the FPU control word.

Constructor Detail

MachineSpecificIA

public MachineSpecificIA()
Method Detail

baselineEmitLoadTIB

public final void baselineEmitLoadTIB(ArchitectureSpecific.Assembler asm,
                                      int dest,
                                      int object,
                                      Offset tibOffset)
Description copied from class: MachineSpecific
The following method will emit code that moves a reference to an object's TIB into a destination register.

Specified by:
baselineEmitLoadTIB in class MachineSpecific
Parameters:
asm - the assembler object to emit code with
dest - the number of the destination register
object - the number of the register holding the object reference
tibOffset - the offset of the TIB from the object header

initializeStack

public final void initializeStack(ArchitectureSpecific.Registers contextRegisters,
                                  Address ip,
                                  Address sp)
Description copied from class: MachineSpecific
The following method initializes a thread stack as if "startoff" method had been called by an empty baseline-compiled "sentinel" frame with one local variable.

Specified by:
initializeStack in class MachineSpecific
Parameters:
contextRegisters - The context registers for this thread
ip - The instruction pointer for the "startoff" method
sp - The base of the stack

adjustESP

public final void adjustESP(ArchitectureSpecific.Registers registers,
                            Offset delta,
                            boolean traceAdjustments)
Description copied from class: MachineSpecific
A thread's stack has been moved or resized. Adjust the ESP register to reflect new position.

Overrides:
adjustESP in class MachineSpecific
Parameters:
registers - The registers for this thread
delta - The displacement to be applied
traceAdjustments - Log all adjustments to stderr if true