Skip to content

Commit 3d7fe9e

Browse files
committed
Use Box instead of Rc for polonius_output.
Refcounting isn't needed.
1 parent 89e84c0 commit 3d7fe9e

File tree

4 files changed

+9
-7
lines changed

4 files changed

+9
-7
lines changed

compiler/rustc_borrowck/src/consumers.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ pub struct BodyWithBorrowckFacts<'tcx> {
7979
pub input_facts: Option<Box<PoloniusInput>>,
8080
/// Polonius output facts. Populated when using
8181
/// [`ConsumerOptions::PoloniusOutputFacts`].
82-
pub output_facts: Option<Rc<PoloniusOutput>>,
82+
pub output_facts: Option<Box<PoloniusOutput>>,
8383
}
8484

8585
/// This function computes borrowck facts for the given body. The [`ConsumerOptions`]

compiler/rustc_borrowck/src/lib.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -586,7 +586,7 @@ struct MirBorrowckCtxt<'a, 'infcx, 'tcx> {
586586
next_region_name: RefCell<usize>,
587587

588588
/// Results of Polonius analysis.
589-
polonius_output: Option<Rc<PoloniusOutput>>,
589+
polonius_output: Option<Box<PoloniusOutput>>,
590590

591591
diags: diags::BorrowckDiags<'infcx, 'tcx>,
592592
move_errors: Vec<MoveError<'tcx>>,

compiler/rustc_borrowck/src/nll.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ pub(crate) struct NllOutput<'tcx> {
4242
pub regioncx: RegionInferenceContext<'tcx>,
4343
pub opaque_type_values: FxIndexMap<LocalDefId, OpaqueHiddenType<'tcx>>,
4444
pub polonius_input: Option<Box<AllFacts>>,
45-
pub polonius_output: Option<Rc<PoloniusOutput>>,
45+
pub polonius_output: Option<Box<PoloniusOutput>>,
4646
pub opt_closure_req: Option<ClosureRegionRequirements<'tcx>>,
4747
pub nll_errors: RegionErrors<'tcx>,
4848
}
@@ -184,7 +184,7 @@ pub(crate) fn compute_regions<'a, 'tcx>(
184184
let algorithm = Algorithm::from_str(&algorithm).unwrap();
185185
debug!("compute_regions: using polonius algorithm {:?}", algorithm);
186186
let _prof_timer = infcx.tcx.prof.generic_activity("polonius_analysis");
187-
Some(Rc::new(Output::compute(all_facts, algorithm, false)))
187+
Some(Box::new(Output::compute(all_facts, algorithm, false)))
188188
} else {
189189
None
190190
}

compiler/rustc_borrowck/src/region_infer/mod.rs

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -637,7 +637,7 @@ impl<'tcx> RegionInferenceContext<'tcx> {
637637
&mut self,
638638
infcx: &InferCtxt<'tcx>,
639639
body: &Body<'tcx>,
640-
polonius_output: Option<Rc<PoloniusOutput>>,
640+
polonius_output: Option<Box<PoloniusOutput>>,
641641
) -> (Option<ClosureRegionRequirements<'tcx>>, RegionErrors<'tcx>) {
642642
let mir_def_id = body.source.def_id();
643643
self.propagate_constraints();
@@ -663,7 +663,9 @@ impl<'tcx> RegionInferenceContext<'tcx> {
663663
self.check_polonius_subset_errors(
664664
outlives_requirements.as_mut(),
665665
&mut errors_buffer,
666-
polonius_output.expect("Polonius output is unavailable despite `-Z polonius`"),
666+
polonius_output
667+
.as_ref()
668+
.expect("Polonius output is unavailable despite `-Z polonius`"),
667669
);
668670
} else {
669671
self.check_universal_regions(outlives_requirements.as_mut(), &mut errors_buffer);
@@ -1411,7 +1413,7 @@ impl<'tcx> RegionInferenceContext<'tcx> {
14111413
&self,
14121414
mut propagated_outlives_requirements: Option<&mut Vec<ClosureOutlivesRequirement<'tcx>>>,
14131415
errors_buffer: &mut RegionErrors<'tcx>,
1414-
polonius_output: Rc<PoloniusOutput>,
1416+
polonius_output: &PoloniusOutput,
14151417
) {
14161418
debug!(
14171419
"check_polonius_subset_errors: {} subset_errors",

0 commit comments

Comments
 (0)