Struct rustc_mir::dataflow::impls::borrows::Borrows [−][src]
pub struct Borrows<'a, 'tcx> {
tcx: TyCtxt<'tcx>,
body: &'a Body<'tcx>,
borrow_set: &'a BorrowSet<'tcx>,
borrows_out_of_scope_at_location: FxHashMap<Location, Vec<BorrowIndex>>,
}Expand description
Borrows stores the data used in the analyses that track the flow
of borrows.
It uniquely identifies every borrow (Rvalue::Ref) by a
BorrowIndex, and maps each such index to a BorrowData
describing the borrow. These indexes are used for representing the
borrows in compact bitvectors.
Fields
tcx: TyCtxt<'tcx>body: &'a Body<'tcx>borrow_set: &'a BorrowSet<'tcx>borrows_out_of_scope_at_location: FxHashMap<Location, Vec<BorrowIndex>>Implementations
impl<'a, 'tcx> Borrows<'a, 'tcx>[src]
impl<'a, 'tcx> Borrows<'a, 'tcx>[src]pub(crate) fn new(
tcx: TyCtxt<'tcx>,
body: &'a Body<'tcx>,
nonlexical_regioncx: &'a RegionInferenceContext<'tcx>,
borrow_set: &'a BorrowSet<'tcx>
) -> Self[src]
tcx: TyCtxt<'tcx>,
body: &'a Body<'tcx>,
nonlexical_regioncx: &'a RegionInferenceContext<'tcx>,
borrow_set: &'a BorrowSet<'tcx>
) -> Self
pub fn location(&self, idx: BorrowIndex) -> &Location[src]
fn kill_loans_out_of_scope_at_location(
&self,
trans: &mut impl GenKill<BorrowIndex>,
location: Location
)[src]
fn kill_loans_out_of_scope_at_location(
&self,
trans: &mut impl GenKill<BorrowIndex>,
location: Location
)[src]Add all borrows to the kill set, if those borrows are out of scope at location.
That means they went out of a nonlexical scope
fn kill_borrows_on_place(
&self,
trans: &mut impl GenKill<BorrowIndex>,
place: Place<'tcx>
)[src]
fn kill_borrows_on_place(
&self,
trans: &mut impl GenKill<BorrowIndex>,
place: Place<'tcx>
)[src]Kill any borrows that conflict with place.
Trait Implementations
impl<'tcx> AnalysisDomain<'tcx> for Borrows<'_, 'tcx>[src]
impl<'tcx> AnalysisDomain<'tcx> for Borrows<'_, 'tcx>[src]type Domain = BitSet<BorrowIndex>
type Domain = BitSet<BorrowIndex>The type that holds the dataflow state at any given point in the program.
const NAME: &'static str[src]
const NAME: &'static str[src]A descriptive name for this analysis. Used only for debugging. Read more
fn bottom_value(&self, _: &Body<'tcx>) -> Self::Domain[src]
fn bottom_value(&self, _: &Body<'tcx>) -> Self::Domain[src]The initial value of the dataflow state upon entry to each basic block.
fn initialize_start_block(&self, _: &Body<'tcx>, _: &mut Self::Domain)[src]
fn initialize_start_block(&self, _: &Body<'tcx>, _: &mut Self::Domain)[src]Mutates the initial value of the dataflow state upon entry to the START_BLOCK. Read more
impl DebugWithContext<Borrows<'_, '_>> for BorrowIndex[src]
impl DebugWithContext<Borrows<'_, '_>> for BorrowIndex[src]impl<'tcx> GenKillAnalysis<'tcx> for Borrows<'_, 'tcx>[src]
impl<'tcx> GenKillAnalysis<'tcx> for Borrows<'_, 'tcx>[src]type Idx = BorrowIndex
fn before_statement_effect(
&self,
trans: &mut impl GenKill<Self::Idx>,
_statement: &Statement<'tcx>,
location: Location
)[src]
fn before_statement_effect(
&self,
trans: &mut impl GenKill<Self::Idx>,
_statement: &Statement<'tcx>,
location: Location
)[src]See Analysis::apply_before_statement_effect.
fn statement_effect(
&self,
trans: &mut impl GenKill<Self::Idx>,
stmt: &Statement<'tcx>,
location: Location
)[src]
fn statement_effect(
&self,
trans: &mut impl GenKill<Self::Idx>,
stmt: &Statement<'tcx>,
location: Location
)[src]See Analysis::apply_statement_effect.
fn before_terminator_effect(
&self,
trans: &mut impl GenKill<Self::Idx>,
_terminator: &Terminator<'tcx>,
location: Location
)[src]
fn before_terminator_effect(
&self,
trans: &mut impl GenKill<Self::Idx>,
_terminator: &Terminator<'tcx>,
location: Location
)[src]See Analysis::apply_before_terminator_effect.
fn terminator_effect(
&self,
trans: &mut impl GenKill<Self::Idx>,
teminator: &Terminator<'tcx>,
_location: Location
)[src]
fn terminator_effect(
&self,
trans: &mut impl GenKill<Self::Idx>,
teminator: &Terminator<'tcx>,
_location: Location
)[src]See Analysis::apply_terminator_effect.
fn call_return_effect(
&self,
_trans: &mut impl GenKill<Self::Idx>,
_block: BasicBlock,
_func: &Operand<'tcx>,
_args: &[Operand<'tcx>],
_dest_place: Place<'tcx>
)[src]
fn call_return_effect(
&self,
_trans: &mut impl GenKill<Self::Idx>,
_block: BasicBlock,
_func: &Operand<'tcx>,
_args: &[Operand<'tcx>],
_dest_place: Place<'tcx>
)[src]See Analysis::apply_call_return_effect.
fn yield_resume_effect(
&self,
_trans: &mut impl GenKill<Self::Idx>,
_resume_block: BasicBlock,
_resume_place: Place<'tcx>
)[src]
fn yield_resume_effect(
&self,
_trans: &mut impl GenKill<Self::Idx>,
_resume_block: BasicBlock,
_resume_place: Place<'tcx>
)[src]See Analysis::apply_yield_resume_effect.
fn switch_int_edge_effects<G: GenKill<Self::Idx>>(
&self,
_block: BasicBlock,
_discr: &Operand<'tcx>,
_edge_effects: &mut impl SwitchIntEdgeEffects<G>
)[src]
fn switch_int_edge_effects<G: GenKill<Self::Idx>>(
&self,
_block: BasicBlock,
_discr: &Operand<'tcx>,
_edge_effects: &mut impl SwitchIntEdgeEffects<G>
)[src]See Analysis::apply_switch_int_edge_effects.
Auto Trait Implementations
impl<'a, 'tcx> !RefUnwindSafe for Borrows<'a, 'tcx>
impl<'a, 'tcx> !Send for Borrows<'a, 'tcx>
impl<'a, 'tcx> !Sync for Borrows<'a, 'tcx>
impl<'a, 'tcx> Unpin for Borrows<'a, 'tcx> where
'tcx: 'a,
'tcx: 'a,
impl<'a, 'tcx> !UnwindSafe for Borrows<'a, 'tcx>
Blanket Implementations
impl<T> BorrowMut<T> for T where
T: ?Sized, [src]
impl<T> BorrowMut<T> for T where
T: ?Sized, [src]pub fn borrow_mut(&mut self) -> &mut T[src]
pub fn borrow_mut(&mut self) -> &mut T[src]Mutably borrows from an owned value. Read more
impl<T> WithConstness for T[src]
impl<T> WithConstness for T[src]