public class ExceptionHandlerStub extends SnippetStub
The descriptor for a call to this stub is HotSpotBackend.EXCEPTION_HANDLER
.
Modifier and Type | Field and Description |
---|---|
static ForeignCallDescriptor |
EXCEPTION_HANDLER_FOR_PC |
method, SnippetGraphUnderConstruction
code, compResult, linkage, providers
Constructor and Description |
---|
ExceptionHandlerStub(HotSpotProviders providers,
HotSpotForeignCallLinkage linkage) |
Modifier and Type | Method and Description |
---|---|
private static boolean |
assertionsEnabled()
Determines if either Java assertions are enabled for
ExceptionHandlerStub or if this
is a HotSpot build where the ASSERT mechanism is enabled. |
(package private) static void |
checkExceptionNotNull(boolean enabled,
Object exception) |
(package private) static void |
checkNoExceptionInThread(Word thread,
boolean enabled) |
private static void |
exceptionHandler(Object exception,
Word exceptionPc,
Register threadRegister) |
static Word |
exceptionHandlerForPc(ForeignCallDescriptor exceptionHandlerForPc,
Word thread) |
protected Object |
getConstantParameterValue(int index,
String name) |
private static boolean |
logging() |
boolean |
preservesRegisters()
This stub is called when returning to a method to handle an exception thrown by a callee.
|
checkConstArg, debugScopeContext, getGraph, getInstalledCodeOwner, makeConstArgs, toString
getCode, getCompilationResult, getDestroyedRegisters, getLinkage, getRegisterConfig, getStubs, initDestroyedRegisters
public static final ForeignCallDescriptor EXCEPTION_HANDLER_FOR_PC
public ExceptionHandlerStub(HotSpotProviders providers, HotSpotForeignCallLinkage linkage)
public boolean preservesRegisters()
preservesRegisters
in class Stub
protected Object getConstantParameterValue(int index, String name)
getConstantParameterValue
in class SnippetStub
private static void exceptionHandler(Object exception, Word exceptionPc, Register threadRegister)
static void checkNoExceptionInThread(Word thread, boolean enabled)
static void checkExceptionNotNull(boolean enabled, Object exception)
private static boolean logging()
private static boolean assertionsEnabled()
ExceptionHandlerStub
or if this
is a HotSpot build where the ASSERT mechanism is enabled.
This first check relies on the per-class assertion status which is why this method must be in this class.
public static Word exceptionHandlerForPc(ForeignCallDescriptor exceptionHandlerForPc, Word thread)