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

4 files changed

Lines changed: 9 additions & 7 deletions

File tree

‎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
pubinput_facts:Option<Box<PoloniusInput>>,
8080
/// Polonius output facts. Populated when using
8181
/// [`ConsumerOptions::PoloniusOutputFacts`].
82-
puboutput_facts:Option<Rc<PoloniusOutput>>,
82+
puboutput_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
pubregioncx:RegionInferenceContext<'tcx>,
4343
pubopaque_type_values:FxIndexMap<LocalDefId,OpaqueHiddenType<'tcx>>,
4444
pubpolonius_input:Option<Box<AllFacts>>,
45-
pubpolonius_output:Option<Rc<PoloniusOutput>>,
45+
pubpolonius_output:Option<Box<PoloniusOutput>>,
4646
pubopt_closure_req:Option<ClosureRegionRequirements<'tcx>>,
4747
pubnll_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
&mutself,
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
mutpropagated_outlives_requirements:Option<&mutVec<ClosureOutlivesRequirement<'tcx>>>,
14131415
errors_buffer:&mutRegionErrors<'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)