diff options
| author | bors <bors@rust-lang.org> | 2020-11-28 15:17:13 +0000 | 
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2020-11-28 15:17:13 +0000 | 
| commit | e37f25aa3f356546ab851e394d5598fc575eabda (patch) | |
| tree | 74c4ea90fdc836713c72cb393d1b8f442dd0e4c4 /compiler/rustc_codegen_cranelift/src/driver/jit.rs | |
| parent | 4ae328bef47dffcbf363e5ae873f419c06a5511d (diff) | |
| parent | 208d680f771601cf5efb6a7bfb49cb2b9e655d3e (diff) | |
| download | rust-e37f25aa3f356546ab851e394d5598fc575eabda.tar.gz rust-e37f25aa3f356546ab851e394d5598fc575eabda.zip | |
Auto merge of #79507 - jonas-schievink:rollup-e5yeayh, r=jonas-schievink
Rollup of 10 pull requests Successful merges: - #78086 (Improve doc for 'as _') - #78853 (rustc_parse: fix ConstBlock expr span) - #79234 (Resolve typedefs in HashMap gdb/lldb pretty-printers) - #79344 (Convert UNC path to local path to satisfy install script on Windows) - #79383 (Fix bold code formatting in keyword docs) - #79460 (Remove intermediate vectors from `add_bounds`) - #79474 (Change comments on types to doc-comments) - #79476 (Sync rustc_codegen_cranelift) - #79478 (Expand docs on Peekable::peek_mut) - #79486 (Slightly improve code samples in E0591) Failed merges: r? `@ghost` `@rustbot` modify labels: rollup
Diffstat (limited to 'compiler/rustc_codegen_cranelift/src/driver/jit.rs')
| -rw-r--r-- | compiler/rustc_codegen_cranelift/src/driver/jit.rs | 16 | 
1 files changed, 10 insertions, 6 deletions
| diff --git a/compiler/rustc_codegen_cranelift/src/driver/jit.rs b/compiler/rustc_codegen_cranelift/src/driver/jit.rs index 3f47df7d844..5a844841c2c 100644 --- a/compiler/rustc_codegen_cranelift/src/driver/jit.rs +++ b/compiler/rustc_codegen_cranelift/src/driver/jit.rs @@ -70,7 +70,11 @@ pub(super) fn run_jit(tcx: TyCtxt<'_>) -> ! { let (mut jit_module, global_asm, _debug, mut unwind_context) = super::time(tcx, "codegen mono items", || { - super::codegen_mono_items(&mut cx, mono_items); + super::predefine_mono_items(&mut cx, &mono_items); + for (mono_item, (linkage, visibility)) in mono_items { + let linkage = crate::linkage::get_clif_linkage(mono_item, linkage, visibility); + super::codegen_mono_item(&mut cx, mono_item, linkage); + } tcx.sess.time("finalize CodegenCx", || cx.finalize()) }); if !global_asm.is_empty() { @@ -81,11 +85,11 @@ pub(super) fn run_jit(tcx: TyCtxt<'_>) -> ! { tcx.sess.abort_if_errors(); - let jit_product = jit_module.finish(); + jit_module.finalize_definitions(); - let _unwind_register_guard = unsafe { unwind_context.register_jit(&jit_product) }; + let _unwind_register_guard = unsafe { unwind_context.register_jit(&jit_module) }; - let finalized_main: *const u8 = jit_product.lookup_func(main_func_id); + let finalized_main: *const u8 = jit_module.get_finalized_function(main_func_id); println!("Rustc codegen cranelift will JIT run the executable, because --jit was passed"); @@ -140,11 +144,11 @@ fn load_imported_symbols_for_jit(tcx: TyCtxt<'_>) -> Vec<(String, *const u8)> { let mut imported_symbols = Vec::new(); for path in dylib_paths { - use object::Object; + use object::{Object, ObjectSymbol}; let lib = libloading::Library::new(&path).unwrap(); let obj = std::fs::read(path).unwrap(); let obj = object::File::parse(&obj).unwrap(); - imported_symbols.extend(obj.dynamic_symbols().filter_map(|(_idx, symbol)| { + imported_symbols.extend(obj.dynamic_symbols().filter_map(|symbol| { let name = symbol.name().unwrap().to_string(); if name.is_empty() || !symbol.is_global() || symbol.is_undefined() { return None; | 
