@@ -72,7 +72,9 @@ fn run_jit(tcx: TyCtxt<'_>) -> ! {
72
72
. iter ( )
73
73
. map ( |cgu| cgu. items_in_deterministic_order ( tcx) . into_iter ( ) )
74
74
. flatten ( )
75
- . collect :: < FxHashMap < _ , ( _ , _ ) > > ( ) ;
75
+ . collect :: < FxHashMap < _ , ( _ , _ ) > > ( )
76
+ . into_iter ( )
77
+ . collect :: < Vec < ( _ , ( _ , _ ) ) > > ( ) ;
76
78
77
79
time ( tcx. sess , "codegen mono items" , || {
78
80
codegen_mono_items ( tcx, & mut jit_module, None , mono_items) ;
@@ -208,36 +210,35 @@ fn run_aot(
208
210
} ;
209
211
210
212
let ( _, cgus) = tcx. collect_and_partition_mono_items ( LOCAL_CRATE ) ;
211
- let mono_items = cgus
212
- . iter ( )
213
- . map ( |cgu| cgu. items_in_deterministic_order ( tcx) . into_iter ( ) )
214
- . flatten ( )
215
- . collect :: < FxHashMap < _ , ( _ , _ ) > > ( ) ;
216
213
217
- let mut module = new_module ( "some_file" . to_string ( ) ) ;
214
+ let modules = time ( tcx. sess , "codegen mono items" , move || {
215
+ cgus. iter ( ) . map ( |cgu| {
216
+ let mono_items = cgu. items_in_deterministic_order ( tcx) ;
218
217
219
- let mut debug = if tcx. sess . opts . debuginfo != DebugInfo :: None {
220
- let debug = DebugContext :: new (
221
- tcx,
222
- module. target_config ( ) . pointer_type ( ) . bytes ( ) as u8 ,
223
- ) ;
224
- Some ( debug)
225
- } else {
226
- None
227
- } ;
218
+ let mut module = new_module ( cgu. name ( ) . as_str ( ) . to_string ( ) ) ;
228
219
229
- time ( tcx. sess , "codegen mono items" , || {
230
- codegen_mono_items ( tcx, & mut module, debug. as_mut ( ) , mono_items) ;
231
- } ) ;
232
- crate :: main_shim:: maybe_create_entry_wrapper ( tcx, & mut module) ;
220
+ let mut debug = if tcx. sess . opts . debuginfo != DebugInfo :: None {
221
+ let debug = DebugContext :: new (
222
+ tcx,
223
+ module. target_config ( ) . pointer_type ( ) . bytes ( ) as u8 ,
224
+ ) ;
225
+ Some ( debug)
226
+ } else {
227
+ None
228
+ } ;
233
229
234
- let modules = vec ! [ emit_module(
235
- tcx,
236
- "some_file" . to_string( ) ,
237
- ModuleKind :: Regular ,
238
- module,
239
- debug,
240
- ) ] ;
230
+ codegen_mono_items ( tcx, & mut module, debug. as_mut ( ) , mono_items) ;
231
+ crate :: main_shim:: maybe_create_entry_wrapper ( tcx, & mut module) ;
232
+
233
+ emit_module (
234
+ tcx,
235
+ cgu. name ( ) . as_str ( ) . to_string ( ) ,
236
+ ModuleKind :: Regular ,
237
+ module,
238
+ debug,
239
+ )
240
+ } ) . collect :: < Vec < _ > > ( )
241
+ } ) ;
241
242
242
243
tcx. sess . abort_if_errors ( ) ;
243
244
@@ -310,12 +311,12 @@ fn codegen_mono_items<'tcx>(
310
311
tcx : TyCtxt < ' tcx > ,
311
312
module : & mut Module < impl Backend + ' static > ,
312
313
debug_context : Option < & mut DebugContext < ' tcx > > ,
313
- mono_items : FxHashMap < MonoItem < ' tcx > , ( RLinkage , Visibility ) > ,
314
+ mono_items : Vec < ( MonoItem < ' tcx > , ( RLinkage , Visibility ) ) > ,
314
315
) {
315
316
let mut cx = CodegenCx :: new ( tcx, module, debug_context) ;
316
317
317
318
tcx. sess . time ( "predefine functions" , || {
318
- for ( & mono_item, & ( linkage, visibility) ) in & mono_items {
319
+ for & ( mono_item, ( linkage, visibility) ) in & mono_items {
319
320
match mono_item {
320
321
MonoItem :: Fn ( instance) => {
321
322
let ( name, sig) =
0 commit comments