From 19684164a7b695b9dc22d879675e8d2b286ef7e5 Mon Sep 17 00:00:00 2001 From: Misha Brukman Date: Thu, 16 Oct 2003 21:18:05 +0000 Subject: [PATCH] * Reorder includes as per the style guide * Move the constructors from .h file here * Document ExecutionEngine::create() * Catch exception possibly thrown by ModuleProvider::releaseModule() git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@9181 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/ExecutionEngine/ExecutionEngine.cpp | 28 +++++++++++++++++++------ 1 file changed, 22 insertions(+), 6 deletions(-) diff --git a/lib/ExecutionEngine/ExecutionEngine.cpp b/lib/ExecutionEngine/ExecutionEngine.cpp index 35a735d647c..ceeb857020f 100644 --- a/lib/ExecutionEngine/ExecutionEngine.cpp +++ b/lib/ExecutionEngine/ExecutionEngine.cpp @@ -6,12 +6,13 @@ //===----------------------------------------------------------------------===// #define DEBUG_TYPE "jit" -#include "llvm/ExecutionEngine/ExecutionEngine.h" -#include "JIT/VM.h" #include "Interpreter/Interpreter.h" -#include "llvm/DerivedTypes.h" +#include "JIT/VM.h" #include "llvm/Constants.h" +#include "llvm/DerivedTypes.h" #include "llvm/Module.h" +#include "llvm/ModuleProvider.h" +#include "llvm/ExecutionEngine/ExecutionEngine.h" #include "llvm/ExecutionEngine/GenericValue.h" #include "llvm/Target/TargetData.h" #include "Support/Debug.h" @@ -21,11 +22,22 @@ Statistic<> NumInitBytes("lli", "Number of bytes of global vars initialized"); +ExecutionEngine::ExecutionEngine(ModuleProvider *P) : + CurMod(*P->getModule()), MP(P) { + assert(P && "ModuleProvider is null?"); +} + +ExecutionEngine::ExecutionEngine(Module *M) : CurMod(*M), MP(0) { + assert(M && "Module is null?"); +} + ExecutionEngine::~ExecutionEngine() { delete MP; } -/// FIXME: document +/// If possible, create a JIT, unless the caller specifically requests an +/// Interpreter or there's an error. If even an Interpreter cannot be created, +/// NULL is returned. /// ExecutionEngine *ExecutionEngine::create(ModuleProvider *MP, bool ForceInterpreter, @@ -37,8 +49,12 @@ ExecutionEngine *ExecutionEngine::create(ModuleProvider *MP, EE = VM::create(MP); // If we can't make a JIT, make an interpreter instead. - if (EE == 0) - EE = Interpreter::create(MP->releaseModule(), TraceMode); + try { + if (EE == 0) + EE = Interpreter::create(MP->releaseModule(), TraceMode); + } catch (...) { + EE = 0; + } return EE; } -- 2.34.1