Skip to content

Commit 87a8a70

Browse files
committed
MIR borrowck: avoid formatting state when it is not needed
This improves performance on large functions.
1 parent 6bc4b50 commit 87a8a70

File tree

1 file changed

+8
-8
lines changed
  • src/librustc_mir/borrow_check

1 file changed

+8
-8
lines changed

src/librustc_mir/borrow_check/mod.rs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ use dataflow::move_paths::{IllegalMoveOriginKind, MoveError};
3636
use dataflow::move_paths::{HasMoveData, LookupResult, MoveData, MoveOutIndex, MovePathIndex};
3737
use util::borrowck_errors::{BorrowckErrors, Origin};
3838

39+
use std::fmt;
3940
use std::iter;
4041

4142
use self::MutateMode::{JustWrite, WriteAndRead};
@@ -308,8 +309,7 @@ impl<'cx, 'gcx, 'tcx> DataflowResultsConsumer<'cx, 'tcx> for MirBorrowckCtxt<'cx
308309
}
309310

310311
fn visit_block_entry(&mut self, bb: BasicBlock, flow_state: &Self::FlowState) {
311-
let summary = flow_state.summary();
312-
debug!("MirBorrowckCtxt::process_block({:?}): {}", bb, summary);
312+
debug!("MirBorrowckCtxt::process_block({:?}): {}", bb, flow_state);
313313
}
314314

315315
fn visit_statement_entry(
@@ -318,12 +318,11 @@ impl<'cx, 'gcx, 'tcx> DataflowResultsConsumer<'cx, 'tcx> for MirBorrowckCtxt<'cx
318318
stmt: &Statement<'tcx>,
319319
flow_state: &Self::FlowState,
320320
) {
321-
let summary = flow_state.summary();
322321
debug!(
323322
"MirBorrowckCtxt::process_statement({:?}, {:?}): {}",
324323
location,
325324
stmt,
326-
summary
325+
flow_state
327326
);
328327
let span = stmt.source_info.span;
329328
match stmt.kind {
@@ -425,12 +424,11 @@ impl<'cx, 'gcx, 'tcx> DataflowResultsConsumer<'cx, 'tcx> for MirBorrowckCtxt<'cx
425424
flow_state: &Self::FlowState,
426425
) {
427426
let loc = location;
428-
let summary = flow_state.summary();
429427
debug!(
430428
"MirBorrowckCtxt::process_terminator({:?}, {:?}): {}",
431429
location,
432430
term,
433-
summary
431+
flow_state
434432
);
435433
let span = term.source_info.span;
436434
match term.kind {
@@ -2679,8 +2677,10 @@ impl<'b, 'gcx, 'tcx> InProgress<'b, 'gcx, 'tcx> {
26792677
xform_move_outs(&mut self.move_outs);
26802678
xform_ever_inits(&mut self.ever_inits);
26812679
}
2680+
}
26822681

2683-
fn summary(&self) -> String {
2682+
impl<'b, 'gcx, 'tcx> fmt::Display for InProgress<'b, 'gcx, 'tcx> {
2683+
fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result {
26842684
let mut s = String::new();
26852685

26862686
s.push_str("borrows in effect: [");
@@ -2757,7 +2757,7 @@ impl<'b, 'gcx, 'tcx> InProgress<'b, 'gcx, 'tcx> {
27572757
});
27582758
s.push_str("]");
27592759

2760-
return s;
2760+
fmt::Display::fmt(&s, fmt)
27612761
}
27622762
}
27632763

0 commit comments

Comments
 (0)