Permalink
Browse files

jit: Remove old crate loading code and don't search through loaded cr…

…ates (use llvm default instead)
  • Loading branch information...
z0w0 committed Sep 28, 2012
1 parent ca44556 commit b3f418c10ed88163f6d1c6774b51eb69def521f8
Showing with 4 additions and 34 deletions.
  1. +2 −23 src/rustc/back/link.rs
  2. +2 −11 src/rustllvm/RustWrapper.cpp
View
@@ -105,7 +105,7 @@ mod jit {
// for us.
let entry = llvm::LLVMRustExecuteJIT(manager,
- pm, m, opt, stacks);
+ pm, m, opt, stacks);
if ptr::is_null(entry) {
llvm_err(sess, ~"Could not JIT");
@@ -223,30 +223,9 @@ mod write {
// JIT execution takes ownership of the module,
// so don't dispose and return.
- // We need to tell LLVM where to resolve all linked
- // symbols from. The equivalent of -lstd, -lcore, etc.
- // By default the JIT will resolve symbols from the std and
- // core linked into rustc. We don't want that,
- // incase the user wants to use an older std library.
- /*let cstore = sess.cstore;
- for cstore::get_used_crate_files(cstore).each |cratepath| {
- debug!{"linking: %s", cratepath};
-
- let _: () = str::as_c_str(
- cratepath,
- |buf_t| {
- if !llvm::LLVMRustLoadLibrary(buf_t) {
- llvm_err(sess, ~"Could not link");
- }
- debug!{"linked: %s", cratepath};
- });
- }*/
-
jit::exec(sess, pm.llpm, llmod, CodeGenOptLevel, true);
- if sess.time_llvm_passes() {
- llvm::LLVMRustPrintPassTimings();
- }
+ if sess.time_llvm_passes() { llvm::LLVMRustPrintPassTimings(); }
return;
}
@@ -282,17 +282,7 @@ void *RustMCJITMemoryManager::getPointerToNamedFunction(const std::string &Name,
const char *NameStr = Name.c_str();
- // Look through loaded crates for symbols.
-
- for (DenseSet<DynamicLibrary*>::iterator I = crates.begin(),
- E = crates.end(); I != E; ++I) {
- void *Ptr = (*I)->getAddressOfSymbol(NameStr);
-
- if (Ptr) return Ptr;
- }
-
- // Fallback to using any symbols LLVM has loaded (generally
- // from the main program).
+ // Look through loaded crates and main for symbols.
void *Ptr = sys::DynamicLibrary::SearchForAddressOfSymbol(NameStr);
if (Ptr) return Ptr;
@@ -365,6 +355,7 @@ LLVMRustExecuteJIT(void* mem,
PM->run(*unwrap(M));
ExecutionEngine* EE = EngineBuilder(unwrap(M))
+ .setErrorStr(&Err)
.setTargetOptions(Options)
.setJITMemoryManager(MM)
.setOptLevel(OptLevel)

0 comments on commit b3f418c

Please sign in to comment.