mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2026-01-06 15:22:07 +00:00
Enable exception handling int JIT
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47079 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -85,6 +85,11 @@ protected:
|
||||
/// pointer is invoked to create it. If this returns null, the JIT will abort.
|
||||
void* (*LazyFunctionCreator)(const std::string &);
|
||||
|
||||
/// ExceptionTableRegister - If Exception Handling is set, the JIT will
|
||||
/// register dwarf tables with this function
|
||||
typedef void (*EERegisterFn)(void*);
|
||||
static EERegisterFn ExceptionTableRegister;
|
||||
|
||||
public:
|
||||
/// lock - This lock is protects the ExecutionEngine, JIT, JITResolver and
|
||||
/// JITEmitter classes. It must be held while changing the internal state of
|
||||
@@ -246,6 +251,19 @@ public:
|
||||
void InstallLazyFunctionCreator(void* (*P)(const std::string &)) {
|
||||
LazyFunctionCreator = P;
|
||||
}
|
||||
|
||||
/// InstallExceptionTableRegister - The JIT will use the given function
|
||||
/// to register the exception tables it generates.
|
||||
static void InstallExceptionTableRegister(void (*F)(void*)) {
|
||||
ExceptionTableRegister = F;
|
||||
}
|
||||
|
||||
/// RegisterTable - Registers the given pointer as an exception table. It uses
|
||||
/// the ExceptionTableRegister function.
|
||||
static void RegisterTable(void* res) {
|
||||
if (ExceptionTableRegister)
|
||||
ExceptionTableRegister(res);
|
||||
}
|
||||
|
||||
protected:
|
||||
explicit ExecutionEngine(ModuleProvider *P);
|
||||
|
||||
Reference in New Issue
Block a user