about summary refs log tree commit diff
diff options
context:
space:
mode:
authorAriel Ben-Yehuda <ariel.byd@gmail.com>2016-08-01 21:43:57 +0300
committerAriel Ben-Yehuda <arielb1@mail.tau.ac.il>2016-08-03 15:08:47 +0300
commit81df89fc2d6ba1b55ab20b0615b8523a6e90963f (patch)
treec12eab1248b730c5b14135121aff146348fb127a
parent32e462ef99e2f61b75e2b0ef37048d50ad8ccf6c (diff)
downloadrust-81df89fc2d6ba1b55ab20b0615b8523a6e90963f.tar.gz
rust-81df89fc2d6ba1b55ab20b0615b8523a6e90963f.zip
remove the ExecutionEngine binding
the code has no tests and will just bitrot by itself.

this is a [breaking-change]
-rw-r--r--mk/rustllvm.mk2
-rw-r--r--src/librustc_llvm/build.rs3
-rw-r--r--src/librustc_llvm/lib.rs9
-rw-r--r--src/rustllvm/ExecutionEngineWrapper.cpp111
4 files changed, 2 insertions, 123 deletions
diff --git a/mk/rustllvm.mk b/mk/rustllvm.mk
index 834a11d37fa..b50dbd01ad0 100644
--- a/mk/rustllvm.mk
+++ b/mk/rustllvm.mk
@@ -24,7 +24,7 @@ LLVM_EXTRA_INCDIRS_$(1)= $$(call CFG_CC_INCLUDE_$(1),$(S)src/llvm/include) \
 endif
 
 RUSTLLVM_OBJS_CS_$(1) := $$(addprefix rustllvm/, \
-	ExecutionEngineWrapper.cpp RustWrapper.cpp PassWrapper.cpp \
+	RustWrapper.cpp PassWrapper.cpp \
 	ArchiveWrapper.cpp)
 
 RUSTLLVM_INCS_$(1) = $$(LLVM_EXTRA_INCDIRS_$(1)) \
diff --git a/src/librustc_llvm/build.rs b/src/librustc_llvm/build.rs
index 085ea240a50..b8548aaec5b 100644
--- a/src/librustc_llvm/build.rs
+++ b/src/librustc_llvm/build.rs
@@ -112,8 +112,7 @@ fn main() {
         cfg.flag(&flag);
     }
 
-    cfg.file("../rustllvm/ExecutionEngineWrapper.cpp")
-       .file("../rustllvm/PassWrapper.cpp")
+    cfg.file("../rustllvm/PassWrapper.cpp")
        .file("../rustllvm/RustWrapper.cpp")
        .file("../rustllvm/ArchiveWrapper.cpp")
        .cpp(true)
diff --git a/src/librustc_llvm/lib.rs b/src/librustc_llvm/lib.rs
index 6905abc2902..de82778bc5e 100644
--- a/src/librustc_llvm/lib.rs
+++ b/src/librustc_llvm/lib.rs
@@ -1099,15 +1099,6 @@ extern {
                                          Name: *const c_char);
     pub fn LLVMDisposeBuilder(Builder: BuilderRef);
 
-    /* Execution engine */
-    pub fn LLVMBuildExecutionEngine(Mod: ModuleRef) -> ExecutionEngineRef;
-    pub fn LLVMDisposeExecutionEngine(EE: ExecutionEngineRef);
-    pub fn LLVMExecutionEngineFinalizeObject(EE: ExecutionEngineRef);
-    pub fn LLVMRustLoadDynamicLibrary(path: *const c_char) -> Bool;
-    pub fn LLVMExecutionEngineAddModule(EE: ExecutionEngineRef, M: ModuleRef);
-    pub fn LLVMExecutionEngineRemoveModule(EE: ExecutionEngineRef, M: ModuleRef)
-                                           -> Bool;
-
     /* Metadata */
     pub fn LLVMSetCurrentDebugLocation(Builder: BuilderRef, L: ValueRef);
     pub fn LLVMGetCurrentDebugLocation(Builder: BuilderRef) -> ValueRef;
diff --git a/src/rustllvm/ExecutionEngineWrapper.cpp b/src/rustllvm/ExecutionEngineWrapper.cpp
deleted file mode 100644
index b26ab446019..00000000000
--- a/src/rustllvm/ExecutionEngineWrapper.cpp
+++ /dev/null
@@ -1,111 +0,0 @@
-// Copyright 2014 The Rust Project Developers. See the COPYRIGHT
-// file at the top-level directory of this distribution and at
-// http://rust-lang.org/COPYRIGHT.
-//
-// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
-// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
-// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
-// option. This file may not be copied, modified, or distributed
-// except according to those terms.
-
-#include "rustllvm.h"
-
-#include "llvm/ExecutionEngine/SectionMemoryManager.h"
-
-using namespace llvm;
-using namespace llvm::sys;
-using namespace llvm::object;
-
-class RustJITMemoryManager : public SectionMemoryManager
-{
-    typedef SectionMemoryManager Base;
-
-    public:
-
-    RustJITMemoryManager() {}
-
-    uint64_t getSymbolAddress(const std::string &Name) override
-    {
-        return Base::getSymbolAddress(Name);
-    }
-};
-
-DEFINE_SIMPLE_CONVERSION_FUNCTIONS(RustJITMemoryManager, LLVMRustJITMemoryManagerRef)
-
-extern "C" LLVMBool LLVMRustLoadDynamicLibrary(const char *path)
-{
-    std::string err;
-    DynamicLibrary lib = DynamicLibrary::getPermanentLibrary(path, &err);
-
-    if (!lib.isValid())
-        LLVMRustSetLastError(err.c_str());
-
-    return lib.isValid();
-}
-
-// Calls LLVMAddModule;
-// exists for consistency with LLVMExecutionEngineRemoveModule
-extern "C" void LLVMExecutionEngineAddModule(
-    LLVMExecutionEngineRef eeref, LLVMModuleRef mref)
-{
-#ifdef _WIN32
-    // On Windows, MCJIT must generate ELF objects
-    std::string target = getProcessTriple();
-    target += "-elf";
-    target = Triple::normalize(target);
-    unwrap(mref)->setTargetTriple(target);
-#endif
-    LLVMAddModule(eeref, mref);
-}
-
-// LLVMRemoveModule exists in LLVM's C bindings,
-// but it requires pointless parameters
-extern "C" LLVMBool LLVMExecutionEngineRemoveModule(
-    LLVMExecutionEngineRef eeref, LLVMModuleRef mref)
-{
-    ExecutionEngine *ee = unwrap(eeref);
-    Module *m = unwrap(mref);
-
-    return ee->removeModule(m);
-}
-
-extern "C" LLVMExecutionEngineRef LLVMBuildExecutionEngine(LLVMModuleRef mod)
-{
-    // These are necessary for code generation to work properly.
-    InitializeNativeTarget();
-    InitializeNativeTargetAsmPrinter();
-    InitializeNativeTargetAsmParser();
-
-#ifdef _WIN32
-    // On Windows, MCJIT must generate ELF objects
-    std::string target = getProcessTriple();
-    target += "-elf";
-    target = Triple::normalize(target);
-    unwrap(mod)->setTargetTriple(target);
-#endif
-
-    std::string error_str;
-    TargetOptions options;
-
-    RustJITMemoryManager *mm = new RustJITMemoryManager;
-
-    ExecutionEngine *ee =
-        EngineBuilder(std::unique_ptr<Module>(unwrap(mod)))
-            .setMCJITMemoryManager(std::unique_ptr<RustJITMemoryManager>(mm))
-            .setEngineKind(EngineKind::JIT)
-            .setErrorStr(&error_str)
-            .setTargetOptions(options)
-            .create();
-
-    if (!ee)
-        LLVMRustSetLastError(error_str.c_str());
-
-    return wrap(ee);
-}
-
-extern "C" void LLVMExecutionEngineFinalizeObject(LLVMExecutionEngineRef eeref)
-{
-    ExecutionEngine *ee = unwrap(eeref);
-
-    ee->finalizeObject();
-}