@@ -194,7 +194,7 @@ use rustc_hir as hir;
194
194
use rustc_hir:: def_id:: { DefId , DefIdMap , LOCAL_CRATE } ;
195
195
use rustc_hir:: itemlikevisit:: ItemLikeVisitor ;
196
196
use rustc_index:: bit_set:: GrowableBitSet ;
197
-
197
+ use smallvec :: SmallVec ;
198
198
use std:: iter;
199
199
200
200
#[ derive( PartialEq ) ]
@@ -227,9 +227,7 @@ impl<'tcx> InliningMap<'tcx> {
227
227
}
228
228
}
229
229
230
- fn record_accesses < I > ( & mut self , source : MonoItem < ' tcx > , new_targets : I )
231
- where
232
- I : Iterator < Item = ( MonoItem < ' tcx > , bool ) > + ExactSizeIterator ,
230
+ fn record_accesses ( & mut self , source : MonoItem < ' tcx > , new_targets : & [ ( MonoItem < ' tcx > , bool ) ] )
233
231
{
234
232
assert ! ( !self . index. contains_key( & source) ) ;
235
233
@@ -240,9 +238,9 @@ impl<'tcx> InliningMap<'tcx> {
240
238
self . targets . reserve ( new_items_count) ;
241
239
self . inlines . ensure ( new_items_count_total) ;
242
240
243
- for ( i, ( target, inline) ) in new_targets. enumerate ( ) {
244
- self . targets . push ( target) ;
245
- if inline {
241
+ for ( i, ( target, inline) ) in new_targets. iter ( ) . enumerate ( ) {
242
+ self . targets . push ( * target) ;
243
+ if * inline {
246
244
self . inlines . insert ( i + start_index) ;
247
245
}
248
246
}
@@ -403,10 +401,12 @@ fn record_accesses<'tcx>(
403
401
mono_item. instantiation_mode ( tcx) == InstantiationMode :: LocalCopy
404
402
} ;
405
403
406
- let accesses =
407
- callees. into_iter ( ) . map ( |mono_item| ( * mono_item, is_inlining_candidate ( mono_item) ) ) ;
404
+ let accesses: SmallVec < [ _ ; 128 ] > = callees
405
+ . into_iter ( )
406
+ . map ( |mono_item| ( * mono_item, is_inlining_candidate ( mono_item) ) )
407
+ . collect ( ) ;
408
408
409
- inlining_map. lock_mut ( ) . record_accesses ( caller, accesses) ;
409
+ inlining_map. lock_mut ( ) . record_accesses ( caller, & accesses) ;
410
410
}
411
411
412
412
fn check_recursion_limit < ' tcx > (
0 commit comments