Skip to content

Commit 1984ec5

Browse files
committed
Fewer calls to arena.alloc.
1 parent 8284035 commit 1984ec5

File tree

3 files changed

+121
-138
lines changed

3 files changed

+121
-138
lines changed

src/librustc/hir/lowering.rs

Lines changed: 13 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -2042,10 +2042,7 @@ impl<'a, 'hir> LoweringContext<'a, 'hir> {
20422042
)
20432043
});
20442044
let ty = ty.map(|ty| -> &'hir hir::Ty { self.arena.alloc(ty.into_inner()) });
2045-
let init = l
2046-
.init
2047-
.as_ref()
2048-
.map(|e| -> &'hir hir::Expr<'hir> { self.arena.alloc(self.lower_expr(e)) });
2045+
let init = l.init.as_ref().map(|e| -> &'hir hir::Expr<'hir> { self.lower_expr(e) });
20492046
(
20502047
hir::Local {
20512048
hir_id: self.lower_node_id(l.id),
@@ -2603,7 +2600,7 @@ impl<'a, 'hir> LoweringContext<'a, 'hir> {
26032600
for (index, stmt) in b.stmts.iter().enumerate() {
26042601
if index == b.stmts.len() - 1 {
26052602
if let StmtKind::Expr(ref e) = stmt.kind {
2606-
expr = Some(self.arena.alloc(self.lower_expr(e)));
2603+
expr = Some(self.lower_expr(e));
26072604
} else {
26082605
stmts.extend(self.lower_stmt(stmt));
26092606
}
@@ -2637,7 +2634,7 @@ impl<'a, 'hir> LoweringContext<'a, 'hir> {
26372634
let node = self.lower_pat_ident(p, binding_mode, ident, lower_sub);
26382635
node
26392636
}
2640-
PatKind::Lit(ref e) => hir::PatKind::Lit(self.arena.alloc(self.lower_expr(e))),
2637+
PatKind::Lit(ref e) => hir::PatKind::Lit(self.lower_expr(e)),
26412638
PatKind::TupleStruct(ref path, ref pats) => {
26422639
let qpath = self.lower_qpath(
26432640
p.id,
@@ -2687,8 +2684,8 @@ impl<'a, 'hir> LoweringContext<'a, 'hir> {
26872684
PatKind::Box(ref inner) => hir::PatKind::Box(self.lower_pat(inner)),
26882685
PatKind::Ref(ref inner, mutbl) => hir::PatKind::Ref(self.lower_pat(inner), mutbl),
26892686
PatKind::Range(ref e1, ref e2, Spanned { node: ref end, .. }) => hir::PatKind::Range(
2690-
self.arena.alloc(self.lower_expr(e1)),
2691-
self.arena.alloc(self.lower_expr(e2)),
2687+
self.lower_expr(e1),
2688+
self.lower_expr(e2),
26922689
self.lower_range_end(end),
26932690
),
26942691
PatKind::Slice(ref pats) => self.lower_pat_slice(pats),
@@ -2916,8 +2913,8 @@ impl<'a, 'hir> LoweringContext<'a, 'hir> {
29162913
})
29172914
.collect();
29182915
}
2919-
StmtKind::Expr(ref e) => hir::StmtKind::Expr(self.arena.alloc(self.lower_expr(e))),
2920-
StmtKind::Semi(ref e) => hir::StmtKind::Semi(self.arena.alloc(self.lower_expr(e))),
2916+
StmtKind::Expr(ref e) => hir::StmtKind::Expr(self.lower_expr(e)),
2917+
StmtKind::Semi(ref e) => hir::StmtKind::Semi(self.lower_expr(e)),
29212918
StmtKind::Mac(..) => panic!("shouldn't exist here"),
29222919
};
29232920
smallvec![hir::Stmt { hir_id: self.lower_node_id(s.id), kind, span: s.span }]
@@ -2975,7 +2972,7 @@ impl<'a, 'hir> LoweringContext<'a, 'hir> {
29752972
self.stmt(span, hir::StmtKind::Local(self.arena.alloc(local)))
29762973
}
29772974

2978-
fn block_expr(&mut self, expr: &'hir hir::Expr<'hir>) -> hir::Block<'hir> {
2975+
fn block_expr(&mut self, expr: &'hir hir::Expr<'hir>) -> &'hir hir::Block<'hir> {
29792976
self.block_all(expr.span, &[], Some(expr))
29802977
}
29812978

@@ -2984,21 +2981,22 @@ impl<'a, 'hir> LoweringContext<'a, 'hir> {
29842981
span: Span,
29852982
stmts: &'hir [hir::Stmt<'hir>],
29862983
expr: Option<&'hir hir::Expr<'hir>>,
2987-
) -> hir::Block<'hir> {
2988-
hir::Block {
2984+
) -> &'hir hir::Block<'hir> {
2985+
let blk = hir::Block {
29892986
stmts,
29902987
expr,
29912988
hir_id: self.next_id(),
29922989
rules: hir::DefaultBlock,
29932990
span,
29942991
targeted_by_break: false,
2995-
}
2992+
};
2993+
self.arena.alloc(blk)
29962994
}
29972995

29982996
/// Constructs a `true` or `false` literal pattern.
29992997
fn pat_bool(&mut self, span: Span, val: bool) -> &'hir hir::Pat<'hir> {
30002998
let expr = self.expr_bool(span, val);
3001-
self.pat(span, hir::PatKind::Lit(self.arena.alloc(expr)))
2999+
self.pat(span, hir::PatKind::Lit(expr))
30023000
}
30033001

30043002
fn pat_ok(&mut self, span: Span, pat: &'hir hir::Pat<'hir>) -> &'hir hir::Pat<'hir> {

0 commit comments

Comments
 (0)