diff options
| author | Ariel Ben-Yehuda <ariel.byd@gmail.com> | 2017-12-03 15:15:29 +0200 |
|---|---|---|
| committer | Ariel Ben-Yehuda <ariel.byd@gmail.com> | 2017-12-06 00:34:01 +0200 |
| commit | 87a8a70d0d208e845cd49c3304bd56a2f3415d5a (patch) | |
| tree | 7beee13333d92f1e035f3b08519a59d3123a7bdb | |
| parent | 6bc4b5051190940ea180fdf4ff8bd93aac473d9b (diff) | |
| download | rust-87a8a70d0d208e845cd49c3304bd56a2f3415d5a.tar.gz rust-87a8a70d0d208e845cd49c3304bd56a2f3415d5a.zip | |
MIR borrowck: avoid formatting state when it is not needed
This improves performance on large functions.
| -rw-r--r-- | src/librustc_mir/borrow_check/mod.rs | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/src/librustc_mir/borrow_check/mod.rs b/src/librustc_mir/borrow_check/mod.rs index 5d68b30df70..fdcee3a6cad 100644 --- a/src/librustc_mir/borrow_check/mod.rs +++ b/src/librustc_mir/borrow_check/mod.rs @@ -36,6 +36,7 @@ use dataflow::move_paths::{IllegalMoveOriginKind, MoveError}; use dataflow::move_paths::{HasMoveData, LookupResult, MoveData, MoveOutIndex, MovePathIndex}; use util::borrowck_errors::{BorrowckErrors, Origin}; +use std::fmt; use std::iter; use self::MutateMode::{JustWrite, WriteAndRead}; @@ -308,8 +309,7 @@ impl<'cx, 'gcx, 'tcx> DataflowResultsConsumer<'cx, 'tcx> for MirBorrowckCtxt<'cx } fn visit_block_entry(&mut self, bb: BasicBlock, flow_state: &Self::FlowState) { - let summary = flow_state.summary(); - debug!("MirBorrowckCtxt::process_block({:?}): {}", bb, summary); + debug!("MirBorrowckCtxt::process_block({:?}): {}", bb, flow_state); } fn visit_statement_entry( @@ -318,12 +318,11 @@ impl<'cx, 'gcx, 'tcx> DataflowResultsConsumer<'cx, 'tcx> for MirBorrowckCtxt<'cx stmt: &Statement<'tcx>, flow_state: &Self::FlowState, ) { - let summary = flow_state.summary(); debug!( "MirBorrowckCtxt::process_statement({:?}, {:?}): {}", location, stmt, - summary + flow_state ); let span = stmt.source_info.span; match stmt.kind { @@ -425,12 +424,11 @@ impl<'cx, 'gcx, 'tcx> DataflowResultsConsumer<'cx, 'tcx> for MirBorrowckCtxt<'cx flow_state: &Self::FlowState, ) { let loc = location; - let summary = flow_state.summary(); debug!( "MirBorrowckCtxt::process_terminator({:?}, {:?}): {}", location, term, - summary + flow_state ); let span = term.source_info.span; match term.kind { @@ -2679,8 +2677,10 @@ impl<'b, 'gcx, 'tcx> InProgress<'b, 'gcx, 'tcx> { xform_move_outs(&mut self.move_outs); xform_ever_inits(&mut self.ever_inits); } +} - fn summary(&self) -> String { +impl<'b, 'gcx, 'tcx> fmt::Display for InProgress<'b, 'gcx, 'tcx> { + fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result { let mut s = String::new(); s.push_str("borrows in effect: ["); @@ -2757,7 +2757,7 @@ impl<'b, 'gcx, 'tcx> InProgress<'b, 'gcx, 'tcx> { }); s.push_str("]"); - return s; + fmt::Display::fmt(&s, fmt) } } |
