org.jikesrvm.compilers.opt.runtimesupport.ia32
Class OptExceptionDeliverer

java.lang.Object
  extended by org.jikesrvm.runtime.ExceptionDeliverer
      extended by org.jikesrvm.compilers.opt.runtimesupport.ia32.OptExceptionDeliverer
All Implemented Interfaces:
ArchitectureSpecific.ArchConstants, ArchConstants, RegisterConstants, StackframeLayoutConstants, TrapConstants
Direct Known Subclasses:
ArchitectureSpecificOpt.OptExceptionDeliverer

public abstract class OptExceptionDeliverer
extends ExceptionDeliverer
implements ArchitectureSpecific.ArchConstants

Handle exception delivery and stack unwinding for methods compiled by optimizing Compiler.


Nested Class Summary
 
Nested classes/interfaces inherited from interface org.jikesrvm.ia32.RegisterConstants
RegisterConstants.FloatingPointMachineRegister, RegisterConstants.FPR, RegisterConstants.GPR, RegisterConstants.MachineRegister, RegisterConstants.MM, RegisterConstants.XMM
 
Field Summary
private static boolean TRACE
           
 
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
OptExceptionDeliverer()
           
 
Method Summary
 void deliverException(CompiledMethod compiledMethod, Address catchBlockInstructionAddress, Throwable exceptionObject, ArchitectureSpecific.Registers registers)
          Pass control to a catch block.
 void unwindStackFrame(CompiledMethod compiledMethod, ArchitectureSpecific.Registers registers)
          Unwind a stackframe.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

TRACE

private static final boolean TRACE
See Also:
Constant Field Values
Constructor Detail

OptExceptionDeliverer

public OptExceptionDeliverer()
Method Detail

deliverException

public void deliverException(CompiledMethod compiledMethod,
                             Address catchBlockInstructionAddress,
                             Throwable exceptionObject,
                             ArchitectureSpecific.Registers registers)
Pass control to a catch block.

Specified by:
deliverException in class ExceptionDeliverer
Parameters:
compiledMethod - method whose catch block is to receive control
catchBlockInstructionAddress - instruction address at which to begin execution of catch block
exceptionObject - exception object to be passed as argument to catch block
registers - registers to be loaded before passing control to catch block

unwindStackFrame

public void unwindStackFrame(CompiledMethod compiledMethod,
                             ArchitectureSpecific.Registers registers)
Unwind a stackframe.

Specified by:
unwindStackFrame in class ExceptionDeliverer
Parameters:
compiledMethod - method whose stackframe is to be unwound
registers - thread state to be updated by restoring non-volatiles and unwinding the stackframe