@@ -1306,7 +1306,6 @@ fn start_executing_work<B: ExtraBackendMethods>(
1306
1306
// `running + if main_thread_state == Lending { 1 } else { 0 }`.
1307
1307
let mut running_with_own_token = 0 ;
1308
1308
1309
- let prof = & cgcx. prof ;
1310
1309
let mut llvm_start_time: Option < VerboseTimingGuard < ' _ > > = None ;
1311
1310
1312
1311
// Run the message loop while there's still anything that needs message
@@ -1352,13 +1351,13 @@ fn start_executing_work<B: ExtraBackendMethods>(
1352
1351
// LLVM work too.
1353
1352
let ( item, _) =
1354
1353
work_items. pop ( ) . expect ( "queue empty - queue_full_enough() broken?" ) ;
1355
- maybe_start_llvm_timer (
1356
- prof ,
1357
- cgcx. config ( item . module_kind ( ) ) ,
1354
+ main_thread_state = MainThreadState :: Lending ;
1355
+ spawn_work (
1356
+ & cgcx,
1358
1357
& mut llvm_start_time,
1358
+ get_worker_id ( & mut free_worker_ids) ,
1359
+ item,
1359
1360
) ;
1360
- main_thread_state = MainThreadState :: Lending ;
1361
- spawn_work ( & cgcx, get_worker_id ( & mut free_worker_ids) , item) ;
1362
1361
}
1363
1362
}
1364
1363
} else if codegen_state == Completed {
@@ -1397,13 +1396,13 @@ fn start_executing_work<B: ExtraBackendMethods>(
1397
1396
match main_thread_state {
1398
1397
MainThreadState :: Idle => {
1399
1398
if let Some ( ( item, _) ) = work_items. pop ( ) {
1400
- maybe_start_llvm_timer (
1401
- prof ,
1402
- cgcx. config ( item . module_kind ( ) ) ,
1399
+ main_thread_state = MainThreadState :: Lending ;
1400
+ spawn_work (
1401
+ & cgcx,
1403
1402
& mut llvm_start_time,
1403
+ get_worker_id ( & mut free_worker_ids) ,
1404
+ item,
1404
1405
) ;
1405
- main_thread_state = MainThreadState :: Lending ;
1406
- spawn_work ( & cgcx, get_worker_id ( & mut free_worker_ids) , item) ;
1407
1406
} else {
1408
1407
// There is no unstarted work, so let the main thread
1409
1408
// take over for a running worker. Otherwise the
@@ -1437,9 +1436,7 @@ fn start_executing_work<B: ExtraBackendMethods>(
1437
1436
&& running_with_own_token < tokens. len ( )
1438
1437
{
1439
1438
let ( item, _) = work_items. pop ( ) . unwrap ( ) ;
1440
-
1441
- maybe_start_llvm_timer ( prof, cgcx. config ( item. module_kind ( ) ) , & mut llvm_start_time) ;
1442
- spawn_work ( & cgcx, get_worker_id ( & mut free_worker_ids) , item) ;
1439
+ spawn_work ( & cgcx, & mut llvm_start_time, get_worker_id ( & mut free_worker_ids) , item) ;
1443
1440
running_with_own_token += 1 ;
1444
1441
}
1445
1442
@@ -1669,27 +1666,22 @@ fn start_executing_work<B: ExtraBackendMethods>(
1669
1666
let quarter_of_workers = workers_running - 3 * workers_running / 4 ;
1670
1667
items_in_queue > 0 && items_in_queue >= quarter_of_workers
1671
1668
}
1672
-
1673
- fn maybe_start_llvm_timer < ' a > (
1674
- prof : & ' a SelfProfilerRef ,
1675
- config : & ModuleConfig ,
1676
- llvm_start_time : & mut Option < VerboseTimingGuard < ' a > > ,
1677
- ) {
1678
- if config. time_module && llvm_start_time. is_none ( ) {
1679
- * llvm_start_time = Some ( prof. verbose_generic_activity ( "LLVM_passes" ) ) ;
1680
- }
1681
- }
1682
1669
}
1683
1670
1684
1671
/// `FatalError` is explicitly not `Send`.
1685
1672
#[ must_use]
1686
1673
pub struct WorkerFatalError ;
1687
1674
1688
- fn spawn_work < B : ExtraBackendMethods > (
1689
- cgcx : & CodegenContext < B > ,
1675
+ fn spawn_work < ' a , B : ExtraBackendMethods > (
1676
+ cgcx : & ' a CodegenContext < B > ,
1677
+ llvm_start_time : & mut Option < VerboseTimingGuard < ' a > > ,
1690
1678
worker_id : usize ,
1691
1679
work : WorkItem < B > ,
1692
1680
) {
1681
+ if cgcx. config ( work. module_kind ( ) ) . time_module && llvm_start_time. is_none ( ) {
1682
+ * llvm_start_time = Some ( cgcx. prof . verbose_generic_activity ( "LLVM_passes" ) ) ;
1683
+ }
1684
+
1693
1685
let cgcx = cgcx. clone ( ) ;
1694
1686
1695
1687
B :: spawn_named_thread ( cgcx. time_trace , work. short_description ( ) , move || {
0 commit comments