Skip to content

Commit 96736f2

Browse files
committed
rustc/middle: improve allocations
1 parent a256a66 commit 96736f2

File tree

2 files changed

+8
-4
lines changed

2 files changed

+8
-4
lines changed

src/librustc/middle/liveness.rs

+5-3
Original file line numberDiff line numberDiff line change
@@ -474,13 +474,15 @@ fn visit_expr<'a, 'tcx>(ir: &mut IrMaps<'a, 'tcx>, expr: &'tcx Expr) {
474474
// construction site.
475475
let mut call_caps = Vec::new();
476476
ir.tcx.with_freevars(expr.id, |freevars| {
477-
for fv in freevars {
477+
call_caps.extend(freevars.iter().filter_map(|fv| {
478478
if let Def::Local(rv) = fv.def {
479479
let fv_ln = ir.add_live_node(FreeVarNode(fv.span));
480480
let var_hid = ir.tcx.hir.node_to_hir_id(rv);
481-
call_caps.push(CaptureInfo { ln: fv_ln, var_hid });
481+
Some(CaptureInfo { ln: fv_ln, var_hid })
482+
} else {
483+
None
482484
}
483-
}
485+
}));
484486
});
485487
ir.set_captures(expr.id, call_caps);
486488

src/librustc/middle/reachable.rs

+3-1
Original file line numberDiff line numberDiff line change
@@ -371,7 +371,9 @@ impl<'a, 'tcx: 'a> ItemLikeVisitor<'tcx> for CollectPrivateImplItemsVisitor<'a,
371371
return
372372
}
373373

374-
for default_method in self.tcx.provided_trait_methods(trait_def_id) {
374+
let provided_trait_methods = self.tcx.provided_trait_methods(trait_def_id);
375+
self.worklist.reserve(provided_trait_methods.len());
376+
for default_method in provided_trait_methods {
375377
let node_id = self.tcx
376378
.hir
377379
.as_local_node_id(default_method.def_id)

0 commit comments

Comments
 (0)