Skip to content

Commit 23b0844

Browse files
committed
Auto merge of #141652 - compiler-errors:more-collect-and-apply, r=<try>
[PERF] More collect and apply I saw that we have quite a few `collect_and_apply` calls for N=3-7 (N=7 corresponding to cumulative 99% of nalgebra's calls). Didn't perf locally, but also this is super low-pri, so let's see what rust-timer says.
2 parents 0fc6f16 + 618a3b0 commit 23b0844

File tree

1 file changed

+90
-0
lines changed

1 file changed

+90
-0
lines changed

compiler/rustc_type_ir/src/interner.rs

Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -402,6 +402,51 @@ impl<T, R> CollectAndApply<T, R> for T {
402402
assert!(iter.next().is_none());
403403
f(&[t0, t1])
404404
}
405+
(3, Some(3)) => {
406+
let t0 = iter.next().unwrap();
407+
let t1 = iter.next().unwrap();
408+
let t2 = iter.next().unwrap();
409+
assert!(iter.next().is_none());
410+
f(&[t0, t1, t2])
411+
}
412+
(4, Some(4)) => {
413+
let t0 = iter.next().unwrap();
414+
let t1 = iter.next().unwrap();
415+
let t2 = iter.next().unwrap();
416+
let t3 = iter.next().unwrap();
417+
assert!(iter.next().is_none());
418+
f(&[t0, t1, t2, t3])
419+
}
420+
(5, Some(5)) => {
421+
let t0 = iter.next().unwrap();
422+
let t1 = iter.next().unwrap();
423+
let t2 = iter.next().unwrap();
424+
let t3 = iter.next().unwrap();
425+
let t4 = iter.next().unwrap();
426+
assert!(iter.next().is_none());
427+
f(&[t0, t1, t2, t3, t4])
428+
}
429+
(6, Some(6)) => {
430+
let t0 = iter.next().unwrap();
431+
let t1 = iter.next().unwrap();
432+
let t2 = iter.next().unwrap();
433+
let t3 = iter.next().unwrap();
434+
let t4 = iter.next().unwrap();
435+
let t5 = iter.next().unwrap();
436+
assert!(iter.next().is_none());
437+
f(&[t0, t1, t2, t3, t4, t5])
438+
}
439+
(7, Some(7)) => {
440+
let t0 = iter.next().unwrap();
441+
let t1 = iter.next().unwrap();
442+
let t2 = iter.next().unwrap();
443+
let t3 = iter.next().unwrap();
444+
let t4 = iter.next().unwrap();
445+
let t5 = iter.next().unwrap();
446+
let t6 = iter.next().unwrap();
447+
assert!(iter.next().is_none());
448+
f(&[t0, t1, t2, t3, t4, t5, t6])
449+
}
405450
_ => f(&iter.collect::<SmallVec<[_; 8]>>()),
406451
}
407452
}
@@ -440,6 +485,51 @@ impl<T, R, E> CollectAndApply<T, R> for Result<T, E> {
440485
assert!(iter.next().is_none());
441486
f(&[t0, t1])
442487
}
488+
(3, Some(3)) => {
489+
let t0 = iter.next().unwrap()?;
490+
let t1 = iter.next().unwrap()?;
491+
let t2 = iter.next().unwrap()?;
492+
assert!(iter.next().is_none());
493+
f(&[t0, t1, t2])
494+
}
495+
(4, Some(4)) => {
496+
let t0 = iter.next().unwrap()?;
497+
let t1 = iter.next().unwrap()?;
498+
let t2 = iter.next().unwrap()?;
499+
let t3 = iter.next().unwrap()?;
500+
assert!(iter.next().is_none());
501+
f(&[t0, t1, t2, t3])
502+
}
503+
(5, Some(5)) => {
504+
let t0 = iter.next().unwrap()?;
505+
let t1 = iter.next().unwrap()?;
506+
let t2 = iter.next().unwrap()?;
507+
let t3 = iter.next().unwrap()?;
508+
let t4 = iter.next().unwrap()?;
509+
assert!(iter.next().is_none());
510+
f(&[t0, t1, t2, t3, t4])
511+
}
512+
(6, Some(6)) => {
513+
let t0 = iter.next().unwrap()?;
514+
let t1 = iter.next().unwrap()?;
515+
let t2 = iter.next().unwrap()?;
516+
let t3 = iter.next().unwrap()?;
517+
let t4 = iter.next().unwrap()?;
518+
let t5 = iter.next().unwrap()?;
519+
assert!(iter.next().is_none());
520+
f(&[t0, t1, t2, t3, t4, t5])
521+
}
522+
(7, Some(7)) => {
523+
let t0 = iter.next().unwrap()?;
524+
let t1 = iter.next().unwrap()?;
525+
let t2 = iter.next().unwrap()?;
526+
let t3 = iter.next().unwrap()?;
527+
let t4 = iter.next().unwrap()?;
528+
let t5 = iter.next().unwrap()?;
529+
let t6 = iter.next().unwrap()?;
530+
assert!(iter.next().is_none());
531+
f(&[t0, t1, t2, t3, t4, t5, t6])
532+
}
443533
_ => f(&iter.collect::<Result<SmallVec<[_; 8]>, _>>()?),
444534
})
445535
}

0 commit comments

Comments
 (0)