pub fn squash(&self) {
        self.freeze();

        let parents = self.parents();
        *self.parent.write().unwrap() = None;

        let squash_accounts_start = Instant::now();
        for p in parents.iter().rev() {
            // root forks cannot be purged
            self.accounts.add_root(p.slot());
        }
        let squash_accounts_ms = duration_as_ms(&squash_accounts_start.elapsed());

        let squash_cache_start = Instant::now();
        parents
            .iter()
            .for_each(|p| self.status_cache.write().unwrap().add_root(p.slot()));
        let squash_cache_ms = duration_as_ms(&squash_cache_start.elapsed());

        datapoint_info!(
            "locktower-observed",
            ("squash_accounts_ms", squash_accounts_ms, i64),
            ("squash_cache_ms", squash_cache_ms, i64)
        );
    }
/// squash the parent's state up into this Bank,
///   this Bank becomes a root
squash the parent's state up into this Bank,
this Bank becomes a root
squash the parent ' s state up into this Bank this Bank becomes a root
pub fn squash(&self) {
        self.freeze();
        let parents = self.parents();
        *self.parent.write().unwrap() = None;
        let squash_accounts_start = Instant::now();
        for p in parents.iter().rev() {
            // root forks cannot be purged
            self.accounts.add_root(p.slot());
        }
        let squash_accounts_ms = duration_as_ms(&squash_accounts_start.elapsed());
        let squash_cache_start = Instant::now();
        parents
            .iter()
            .for_each(|p| self.status_cache.write().unwrap().add_root(p.slot()));
        let squash_cache_ms = duration_as_ms(&squash_cache_start.elapsed());
        datapoint_info!(
            "locktower-observed",
            ("squash_accounts_ms", squash_accounts_ms, i64),
            ("squash_cache_ms", squash_cache_ms, i64)
        );
    }
pub fn squash ( & self ) { self . freeze ( ) ; let parents = self . parents ( ) ; * self . parent . write ( ) . unwrap ( ) = None ; let squash_accounts_start = Instant :: now ( ) ; for p in parents . iter ( ) . rev ( ) { // root forks cannot be purged self . accounts . add_root ( p . slot ( ) ) ; } let squash_accounts_ms = duration_as_ms ( & squash_accounts_start . elapsed ( ) ) ; let squash_cache_start = Instant :: now ( ) ; parents . iter ( ) . for_each ( | p | self . status_cache . write ( ) . unwrap ( ) . add_root ( p . slot ( ) ) ) ; let squash_cache_ms = duration_as_ms ( & squash_cache_start . elapsed ( ) ) ; datapoint_info ! ( " " ( " " squash_accounts_ms i64 ) ( " " squash_cache_ms i64 ) ) ; }
squash the parent's state up into this Bank,
this Bank becomes a root
squash the parent ' s state up into this Bank this Bank becomes a root
&self
&self