diff options
| author | bjorn3 <bjorn3@users.noreply.github.com> | 2021-04-08 19:22:48 +0200 |
|---|---|---|
| committer | bjorn3 <bjorn3@users.noreply.github.com> | 2021-04-14 15:01:09 +0200 |
| commit | d4d270d5030b48d815a0ca19f28c78888847be11 (patch) | |
| tree | 23a143f46bd12601dca5622f19b3515eb5053151 | |
| parent | 6fac7f089f8e209ec2181900a322294896cfbcbf (diff) | |
| download | rust-d4d270d5030b48d815a0ca19f28c78888847be11.tar.gz rust-d4d270d5030b48d815a0ca19f28c78888847be11.zip | |
Merge BACKEND_CONFIG and CURRENT_MODULE thread locals
| -rw-r--r-- | src/driver/jit.rs | 29 |
1 files changed, 16 insertions, 13 deletions
diff --git a/src/driver/jit.rs b/src/driver/jit.rs index 99d8cd57ba6..4b12c1aec99 100644 --- a/src/driver/jit.rs +++ b/src/driver/jit.rs @@ -14,9 +14,13 @@ use cranelift_jit::{JITBuilder, JITModule}; use crate::{prelude::*, BackendConfig}; use crate::{CodegenCx, CodegenMode}; +struct JitState { + backend_config: BackendConfig, + jit_module: JITModule, +} + thread_local! { - pub static BACKEND_CONFIG: RefCell<Option<BackendConfig>> = RefCell::new(None); - pub static CURRENT_MODULE: RefCell<Option<JITModule>> = RefCell::new(None); + static LAZY_JIT_STATE: RefCell<Option<JitState>> = RefCell::new(None); } pub(crate) fn run_jit(tcx: TyCtxt<'_>, backend_config: BackendConfig) -> ! { @@ -106,10 +110,6 @@ pub(crate) fn run_jit(tcx: TyCtxt<'_>, backend_config: BackendConfig) -> ! { // useful as some dynamic linkers use it as a marker to jump over. argv.push(std::ptr::null()); - BACKEND_CONFIG.with(|tls_backend_config| { - assert!(tls_backend_config.borrow_mut().replace(backend_config).is_none()) - }); - let start_sig = Signature { params: vec