diff options
| author | ljedrz <ljedrz@gmail.com> | 2018-10-02 11:00:41 +0200 |
|---|---|---|
| committer | ljedrz <ljedrz@gmail.com> | 2018-10-03 09:04:02 +0200 |
| commit | 04b99bc10390514832197b30c34a3993cd028092 (patch) | |
| tree | ba27e9dbf745c1f6a9f1a223b0f86094a01a7e59 | |
| parent | db171649d3e2298859740d164f92e99c8bd3cf4b (diff) | |
| download | rust-04b99bc10390514832197b30c34a3993cd028092.tar.gz rust-04b99bc10390514832197b30c34a3993cd028092.zip | |
rustc/ty: improve allocations
| -rw-r--r-- | src/librustc/ty/outlives.rs | 6 | ||||
| -rw-r--r-- | src/librustc/ty/subst.rs | 1 | ||||
| -rw-r--r-- | src/librustc/ty/wf.rs | 1 |
3 files changed, 3 insertions, 5 deletions
diff --git a/src/librustc/ty/outlives.rs b/src/librustc/ty/outlives.rs index e77080a0c91..350af6b9305 100644 --- a/src/librustc/ty/outlives.rs +++ b/src/librustc/ty/outlives.rs @@ -180,9 +180,5 @@ impl<'a, 'gcx, 'tcx> TyCtxt<'a, 'gcx, 'tcx> { } fn push_region_constraints<'tcx>(out: &mut Vec<Component<'tcx>>, regions: Vec<ty::Region<'tcx>>) { - for r in regions { - if !r.is_late_bound() { - out.push(Component::Region(r)); - } - } + out.extend(regions.iter().filter(|&r| !r.is_late_bound()).map(|r| Component::Region(r))); } diff --git a/src/librustc/ty/subst.rs b/src/librustc/ty/subst.rs index 72d720b138a..c0a42fd5854 100644 --- a/src/librustc/ty/subst.rs +++ b/src/librustc/ty/subst.rs @@ -229,6 +229,7 @@ impl<'a, 'gcx, 'tcx> Substs<'tcx> { mk_kind: &mut F) where F: FnMut(&ty::GenericParamDef, &[Kind<'tcx>]) -> Kind<'tcx> { + substs.reserve(defs.params.len()); for param in &defs.params { let kind = mk_kind(param, substs); assert_eq!(param.index as usize, substs.len()); diff --git a/src/librustc/ty/wf.rs b/src/librustc/ty/wf.rs index a5a0be21f2e..e2cc55a693f 100644 --- a/src/librustc/ty/wf.rs +++ b/src/librustc/ty/wf.rs @@ -493,6 +493,7 @@ impl<'a, 'gcx, 'tcx> WfPredicates<'a, 'gcx, 'tcx> { let explicit_bound = region; + self.out.reserve(implicit_bounds.len()); for implicit_bound in implicit_bounds { let cause = self.cause(traits::ObjectTypeBound(ty, explicit_bound)); let outlives = ty::Binder::dummy( |
