From b70898d5eeb9f7fc994035eb90b609c49f53f745 Mon Sep 17 00:00:00 2001 From: Dylan MacKenzie Date: Tue, 14 Jan 2020 15:05:16 -0800 Subject: [PATCH] Improve docs for `GenKill` and `GenKillSet` --- src/librustc_mir/dataflow/generic/mod.rs | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/librustc_mir/dataflow/generic/mod.rs b/src/librustc_mir/dataflow/generic/mod.rs index bf18bc7a5d0..09ca72e75b6 100644 --- a/src/librustc_mir/dataflow/generic/mod.rs +++ b/src/librustc_mir/dataflow/generic/mod.rs @@ -273,21 +273,19 @@ fn apply_call_return_effect( } /// The legal operations for a transfer function in a gen/kill problem. -pub trait GenKill: Sized { - /// Inserts `elem` into the `gen` set, removing it the `kill` set if present. +pub trait GenKill { + /// Inserts `elem` into the state vector. fn gen(&mut self, elem: T); - /// Inserts `elem` into the `kill` set, removing it the `gen` set if present. + /// Removes `elem` from the state vector. fn kill(&mut self, elem: T); - /// Inserts the given elements into the `gen` set, removing them from the `kill` set if present. fn gen_all(&mut self, elems: impl IntoIterator) { for elem in elems { self.gen(elem); } } - /// Inserts the given elements into the `kill` set, removing them from the `gen` set if present. fn kill_all(&mut self, elems: impl IntoIterator) { for elem in elems { self.kill(elem); @@ -296,6 +294,10 @@ fn kill_all(&mut self, elems: impl IntoIterator) { } /// Stores a transfer function for a gen/kill problem. +/// +/// Calling `gen`/`kill` on a `GenKillSet` will "build up" a transfer function so that it can be +/// applied to a state vector efficiently. When there are multiple calls to `gen` and/or `kill` for +/// the same element, the most recent one takes precedence. #[derive(Clone)] pub struct GenKillSet { gen: HybridBitSet, @@ -311,7 +313,7 @@ pub fn identity(universe: usize) -> Self { } } - /// Applies this transfer function to the given bitset. + /// Applies this transfer function to the given state vector. pub fn apply(&self, state: &mut BitSet) { state.union(&self.gen); state.subtract(&self.kill); -- 2.44.0