Modifier and Type | Method and Description |
---|---|
static AbstractRegisters |
ArchitectureFactory.createRegisters() |
Modifier and Type | Method and Description |
---|---|
void |
BaselineExceptionDeliverer.deliverException(CompiledMethod compiledMethod,
Address catchBlockInstructionAddress,
Throwable exceptionObject,
AbstractRegisters registers)
Pass control to a catch block.
|
void |
BaselineExceptionDeliverer.unwindStackFrame(CompiledMethod compiledMethod,
AbstractRegisters registers)
Unwind a stackframe.
|
Modifier and Type | Method and Description |
---|---|
void |
OptExceptionDeliverer.deliverException(CompiledMethod compiledMethod,
Address catchBlockInstructionAddress,
Throwable exceptionObject,
AbstractRegisters registers)
Pass control to a catch block.
|
void |
OptExceptionDeliverer.unwindStackFrame(CompiledMethod compiledMethod,
AbstractRegisters registers)
Unwind a stackframe.
|
Modifier and Type | Class and Description |
---|---|
class |
Registers
The machine state comprising a thread's execution context, used both for
thread context switching and for software/hardware exception
reporting/delivery.
|
Modifier and Type | Method and Description |
---|---|
void |
JNIExceptionDeliverer.deliverException(CompiledMethod compiledMethod,
Address catchBlockInstructionAddress,
Throwable exceptionObject,
AbstractRegisters registers)
Deliver exception, not possible for JNI methods
|
void |
JNIExceptionDeliverer.unwindStackFrame(CompiledMethod compiledMethod,
AbstractRegisters registers)
Unwind registers/stack through JNI method
|
Constructor and Description |
---|
TempRegisters(AbstractRegisters contextRegisters) |
Modifier and Type | Method and Description |
---|---|
abstract void |
ExceptionDeliverer.deliverException(CompiledMethod compiledMethod,
Address catchBlockInstructionAddress,
Throwable exceptionObject,
AbstractRegisters registers)
Stackframe's method has a "catch" block for exception being
thrown and control is to be passed to that catch block.
|
private static void |
RuntimeEntrypoints.deliverException(Throwable exceptionObject,
AbstractRegisters exceptionRegisters)
Deliver an exception to current java thread.
|
static void |
Magic.restoreHardwareExceptionState(AbstractRegisters registers)
Resume execution with specified thread exception state.
|
static void |
Magic.saveThreadState(AbstractRegisters registers)
Saves current thread state.
|
static void |
Magic.threadSwitch(RVMThread currentThread,
AbstractRegisters restoreRegs)
Switch threads.
|
private static void |
RuntimeEntrypoints.unwindInvisibleStackFrame(AbstractRegisters registers)
Unwind stack frame for an <invisible method>.
|
abstract void |
ExceptionDeliverer.unwindStackFrame(CompiledMethod compiledMethod,
AbstractRegisters registers)
Stackframe's method has no "catch" block for exception being thrown
and stackframe is to be "unwound" as follows:
1. for a synchronized method, call ObjectModel.genericUnlock(),
passing it the appropriate "lock" object
for non-static methods, the lock is the method's
first argument ("this")
for static methods, the lock is the method's java.lang.Class
2. restore the non-volatile registers (including fp) that were saved
in the method's prologue, by copying them from the method's stackframe
save area into the provided "registers" object
|
Modifier and Type | Field and Description |
---|---|
AbstractRegisters |
RVMThread.contextRegisters
Place to save register state when this thread is not actually running.
|
AbstractRegisters |
RVMThread.contextRegistersSave
Place to save register state when this thread is not actually running.
|
private AbstractRegisters |
RVMThread.contextRegistersSaveShadow |
private AbstractRegisters |
RVMThread.contextRegistersShadow |
private AbstractRegisters |
RVMThread.exceptionRegisters
Place to save register state during hardware(C signal trap handler) or
software (RuntimeEntrypoints.athrow) trap handling.
|
private AbstractRegisters |
RVMThread.exceptionRegistersShadow |
private AbstractRegisters |
RVMThread.trampolineRegisters
Registers used by return barrier trampoline
|
Modifier and Type | Method and Description |
---|---|
AbstractRegisters |
RVMThread.getContextRegisters() |
AbstractRegisters |
RVMThread.getExceptionRegisters() |
Modifier and Type | Method and Description |
---|---|
private static void |
RVMThread.adjustRegisters(AbstractRegisters registers,
Offset delta)
A thread's stack has been moved or resized.
|
static void |
RVMThread.resizeCurrentStack(int newSize,
AbstractRegisters exceptionRegisters)
Change the size of the currently executing thread's stack.
|
private static void |
RVMThread.transferExecutionToNewStack(byte[] newStack,
AbstractRegisters exceptionRegisters) |