diff options
| author | Dylan DPC <dylan.dpc@gmail.com> | 2020-02-06 15:37:38 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-02-06 15:37:38 +0100 |
| commit | a1478b760431c8327181cd481ae2c100c4d7e2f1 (patch) | |
| tree | ba2e3bb44637ec0b8625ef721d7b8d8eafbd1746 | |
| parent | 1f8df2508f2772d83011f0f651de86181123e519 (diff) | |
| parent | 6ad725e9f09f8ac1e577460ce31bc2928fe3531f (diff) | |
| download | rust-a1478b760431c8327181cd481ae2c100c4d7e2f1.tar.gz rust-a1478b760431c8327181cd481ae2c100c4d7e2f1.zip | |
Rollup merge of #68691 - nnethercote:rm-RefCell-from-ObligationForest, r=nikomatsakis
Remove `RefCell` usage from `ObligationForest`. It's not needed. This doesn't affect performance, it just simplifies the code a little. r? @nikomatsakis
| -rw-r--r-- | src/librustc_data_structures/obligation_forest/mod.rs | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/src/librustc_data_structures/obligation_forest/mod.rs b/src/librustc_data_structures/obligation_forest/mod.rs index 974d9dcfae4..0384776e9fb 100644 --- a/src/librustc_data_structures/obligation_forest/mod.rs +++ b/src/librustc_data_structures/obligation_forest/mod.rs @@ -74,7 +74,7 @@ use crate::fx::{FxHashMap, FxHashSet}; -use std::cell::{Cell, RefCell}; +use std::cell::Cell; use std::collections::hash_map::Entry; use std::fmt::Debug; use std::hash; @@ -146,7 +146,7 @@ pub struct ObligationForest<O: ForestObligation> { active_cache: FxHashMap<O::Predicate, usize>, /// A vector reused in compress(), to avoid allocating new vectors. - node_rewrites: RefCell<Vec<usize>>, + node_rewrites: Vec<usize>, obligation_tree_id_generator: ObligationTreeIdGenerator, @@ -285,7 +285,7 @@ impl<O: ForestObligation> ObligationForest<O> { nodes: vec![], done_cache: Default::default(), active_cache: Default::default(), - node_rewrites: RefCell::new(vec![]), + node_rewrites: vec![], obligation_tree_id_generator: (0..).map(ObligationTreeId), error_cache: Default::default(), } @@ -590,7 +590,7 @@ impl<O: ForestObligation> ObligationForest<O> { #[inline(never)] fn compress(&mut self, do_completed: DoCompleted) -> Option<Vec<O>> { let orig_nodes_len = self.nodes.len(); - let mut node_rewrites: Vec<_> = self.node_rewrites.replace(vec![]); + let mut node_rewrites: Vec<_> = std::mem::take(&mut self.node_rewrites); debug_assert!(node_rewrites.is_empty()); node_rewrites.extend(0..orig_nodes_len); let mut dead_nodes = 0; @@ -651,7 +651,7 @@ impl<O: ForestObligation> ObligationForest<O> { } node_rewrites.truncate(0); - self.node_rewrites.replace(node_rewrites); + self.node_rewrites = node_rewrites; if do_completed == DoCompleted::Yes { Some(removed_done_obligations) } else { None } } |
