mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-09-24 23:28:41 +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);
|
||||
|
@@ -89,6 +89,17 @@ public:
|
||||
/// deallocateMemForFunction - Free JIT memory for the specified function.
|
||||
/// This is never called when the JIT is currently emitting a function.
|
||||
virtual void deallocateMemForFunction(const Function *F) = 0;
|
||||
|
||||
/// startExceptionTable - When we finished JITing the function, if exception
|
||||
/// handling is set, we emit the exception table.
|
||||
virtual unsigned char* startExceptionTable(const Function* F,
|
||||
uintptr_t &ActualSize) = 0;
|
||||
|
||||
/// endExceptionTable - This method is called when the JIT is done emitting
|
||||
/// the exception table.
|
||||
virtual void endExceptionTable(const Function *F, unsigned char *TableStart,
|
||||
unsigned char *TableEnd,
|
||||
unsigned char* FrameRegister) = 0;
|
||||
};
|
||||
|
||||
} // end namespace llvm.
|
||||
|
Reference in New Issue
Block a user