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:
Nicolas Geoffray
2008-02-13 18:39:37 +00:00
parent 84ad8378ee
commit afe6c2b001
13 changed files with 961 additions and 8 deletions

View File

@@ -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);