diff options
| author | Brian Anderson <banderson@mozilla.com> | 2013-06-13 12:40:22 -0700 |
|---|---|---|
| committer | Brian Anderson <banderson@mozilla.com> | 2013-06-13 13:08:57 -0700 |
| commit | 19adece68b00bd1873499cca6f1537750608d769 (patch) | |
| tree | 48f23286166ee3f2cefc80161054cadc62ff7040 /src/rustllvm | |
| parent | 5bff471dde5350437c1bb51178ba6a2a903ec813 (diff) | |
Revert "Have JIT execution take ownership of the LLVMContextRef"
This reverts commit 5c5095d25e3652c434c8d4ec178e6844877e3c2d. Conflicts: src/librusti/rusti.rc
Diffstat (limited to 'src/rustllvm')
| -rw-r--r-- | src/rustllvm/RustWrapper.cpp | 30 | ||||
| -rw-r--r-- | src/rustllvm/rustllvm.def.in | 4 | ||||
| -rw-r--r-- | src/rustllvm/rustllvm.h | 1 |
3 files changed, 19 insertions, 16 deletions
diff --git a/src/rustllvm/RustWrapper.cpp b/src/rustllvm/RustWrapper.cpp index 30e01b53ab7..17eb0f50b9b 100644 --- a/src/rustllvm/RustWrapper.cpp +++ b/src/rustllvm/RustWrapper.cpp @@ -329,12 +329,12 @@ LLVMRustLoadCrate(void* mem, const char* crate) { return true; } -extern "C" LLVMExecutionEngineRef -LLVMRustBuildJIT(void* mem, - LLVMPassManagerRef PMR, - LLVMModuleRef M, - CodeGenOpt::Level OptLevel, - bool EnableSegmentedStacks) { +extern "C" void* +LLVMRustExecuteJIT(void* mem, + LLVMPassManagerRef PMR, + LLVMModuleRef M, + CodeGenOpt::Level OptLevel, + bool EnableSegmentedStacks) { InitializeNativeTarget(); InitializeNativeTargetAsmPrinter(); @@ -371,15 +371,21 @@ LLVMRustBuildJIT(void* mem, if(!EE || Err != "") { LLVMRustError = Err.c_str(); - // The EngineBuilder only takes ownership of these two structures if the - // create() call is successful, but here it wasn't successful. - LLVMDisposeModule(M); - delete MM; - return NULL; + return 0; } MM->invalidateInstructionCache(); - return wrap(EE); + Function* func = EE->FindFunctionNamed("_rust_main"); + + if(!func || Err != "") { + LLVMRustError = Err.c_str(); + return 0; + } + + void* entry = EE->getPointerToFunction(func); + assert(entry); + + return entry; } extern "C" bool diff --git a/src/rustllvm/rustllvm.def.in b/src/rustllvm/rustllvm.def.in index f5397165781..f8c68d798b9 100644 --- a/src/rustllvm/rustllvm.def.in +++ b/src/rustllvm/rustllvm.def.in @@ -6,14 +6,13 @@ LLVMRustConstSmallInt LLVMRustConstInt LLVMRustLoadCrate LLVMRustPrepareJIT -LLVMRustBuildJIT +LLVMRustExecuteJIT LLVMRustParseBitcode LLVMRustParseAssemblyFile LLVMRustPrintPassTimings LLVMRustStartMultithreading LLVMCreateObjectFile LLVMDisposeObjectFile -LLVMDisposeExecutionEngine LLVMGetSections LLVMDisposeSectionIterator LLVMIsSectionIteratorAtEnd @@ -357,7 +356,6 @@ LLVMGetParamParent LLVMGetParamTypes LLVMGetParams LLVMGetPointerAddressSpace -LLVMGetPointerToGlobal LLVMGetPreviousBasicBlock LLVMGetPreviousFunction LLVMGetPreviousGlobal diff --git a/src/rustllvm/rustllvm.h b/src/rustllvm/rustllvm.h index 394146eea20..1c8842f7b4a 100644 --- a/src/rustllvm/rustllvm.h +++ b/src/rustllvm/rustllvm.h @@ -45,7 +45,6 @@ #include "llvm/Transforms/Vectorize.h" #include "llvm-c/Core.h" #include "llvm-c/BitReader.h" -#include "llvm-c/ExecutionEngine.h" #include "llvm-c/Object.h" // Used by RustMCJITMemoryManager::getPointerToNamedFunction() |
