@@ -8,6 +8,7 @@ use std::os::raw::{c_char, c_int};
88use cranelift_codegen:: binemit:: { NullStackMapSink , NullTrapSink } ;
99use rustc_codegen_ssa:: CrateInfo ;
1010use rustc_middle:: mir:: mono:: MonoItem ;
11+ use rustc_session:: config:: EntryFnType ;
1112
1213use 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