Skip to content

Commit 9d07b92

Browse files
committed
[cg_clif] Fix run_jit from sync
1 parent 505aa48 commit 9d07b92

File tree

1 file changed

+5
-51
lines changed
  • compiler/rustc_codegen_cranelift/src/driver

1 file changed

+5
-51
lines changed

compiler/rustc_codegen_cranelift/src/driver/jit.rs

+5-51
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ use std::os::raw::{c_char, c_int};
88
use cranelift_codegen::binemit::{NullStackMapSink, NullTrapSink};
99
use rustc_codegen_ssa::CrateInfo;
1010
use rustc_middle::mir::mono::MonoItem;
11+
use rustc_session::config::EntryFnType;
1112

1213
use cranelift_jit::{JITBuilder, JITModule};
1314

@@ -138,57 +139,10 @@ pub(crate) fn run_jit(tcx: TyCtxt<'_>, backend_config: BackendConfig) -> ! {
138139
*lazy_jit_state = Some(JitState { backend_config, jit_module });
139140
});
140141

141-
let (main_def_id, entry_ty) = tcx.entry_fn(LOCAL_CRATE).unwrap();
142-
let instance = Instance::mono(tcx, main_def_id).polymorphize(tcx);
143-
144-
match entry_ty {
145-
EntryFnType::Main => {
146-
// FIXME set program arguments somehow
147-
148-
let main_sig = Signature {
149-
params: vec![],
150-
returns: vec![],
151-
call_conv: CallConv::triple_default(&crate::target_triple(tcx.sess)),
152-
};
153-
let main_func_id = jit_module
154-
.declare_function(tcx.symbol_name(instance).name, Linkage::Import, &main_sig)
155-
.unwrap();
156-
let finalized_main: *const u8 = jit_module.get_finalized_function(main_func_id);
157-
158-
CURRENT_MODULE.with(|current_module| {
159-
assert!(current_module.borrow_mut().replace(jit_module).is_none())
160-
});
161-
162-
let f: extern "C" fn() = unsafe { ::std::mem::transmute(finalized_main) };
163-
f();
164-
std::process::exit(0);
165-
}
166-
EntryFnType::Start => {
167-
let start_sig = Signature {
168-
params: vec![
169-
AbiParam::new(jit_module.target_config().pointer_type()),
170-
AbiParam::new(jit_module.target_config().pointer_type()),
171-
],
172-
returns: vec![AbiParam::new(
173-
jit_module.target_config().pointer_type(), /*isize*/
174-
)],
175-
call_conv: CallConv::triple_default(&crate::target_triple(tcx.sess)),
176-
};
177-
let start_func_id = jit_module
178-
.declare_function(tcx.symbol_name(instance).name, Linkage::Import, &start_sig)
179-
.unwrap();
180-
let finalized_start: *const u8 = jit_module.get_finalized_function(start_func_id);
181-
182-
CURRENT_MODULE.with(|current_module| {
183-
assert!(current_module.borrow_mut().replace(jit_module).is_none())
184-
});
185-
186-
let f: extern "C" fn(c_int, *const *const c_char) -> c_int =
187-
unsafe { ::std::mem::transmute(finalized_start) };
188-
let ret = f(args.len() as c_int, argv.as_ptr());
189-
std::process::exit(ret);
190-
}
191-
}
142+
let f: extern "C" fn(c_int, *const *const c_char) -> c_int =
143+
unsafe { ::std::mem::transmute(finalized_start) };
144+
let ret = f(args.len() as c_int, argv.as_ptr());
145+
std::process::exit(ret);
192146
}
193147

194148
#[no_mangle]

0 commit comments

Comments
 (0)