Skip to content

Commit bf4532c

Browse files
committed
Rename DropTree::drops as DropTree::drop_nodes.
Because `Scope` also has a field named `drops`, and I found having two fields with the same name made this code harder to read.
1 parent df09fed commit bf4532c

File tree

1 file changed

+46
-34
lines changed
  • compiler/rustc_mir_build/src/builder

1 file changed

+46
-34
lines changed

compiler/rustc_mir_build/src/builder/scope.rs

Lines changed: 46 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -209,7 +209,7 @@ const ROOT_NODE: DropIdx = DropIdx::ZERO;
209209
#[derive(Debug)]
210210
struct DropTree {
211211
/// Nodes in the drop tree, containing drop data and a link to the next node.
212-
drops: IndexVec<DropIdx, DropNode>,
212+
drop_nodes: IndexVec<DropIdx, DropNode>,
213213
/// Map for finding the index of an existing node, given its contents.
214214
existing_drops_map: FxHashMap<DropNodeKey, DropIdx>,
215215
/// Edges into the `DropTree` that need to be added once it's lowered.
@@ -277,8 +277,8 @@ impl DropTree {
277277
let fake_source_info = SourceInfo::outermost(DUMMY_SP);
278278
let fake_data =
279279
DropData { source_info: fake_source_info, local: Local::MAX, kind: DropKind::Storage };
280-
let drops = IndexVec::from_raw(vec![DropNode { data: fake_data, next: DropIdx::MAX }]);
281-
Self { drops, entry_points: Vec::new(), existing_drops_map: FxHashMap::default() }
280+
let drop_nodes = IndexVec::from_raw(vec![DropNode { data: fake_data, next: DropIdx::MAX }]);
281+
Self { drop_nodes, entry_points: Vec::new(), existing_drops_map: FxHashMap::default() }
282282
}
283283

284284
/// Adds a node to the drop tree, consisting of drop data and the index of
@@ -287,20 +287,20 @@ impl DropTree {
287287
/// If there is already an equivalent node in the tree, nothing is added, and
288288
/// that node's index is returned. Otherwise, the new node's index is returned.
289289
fn add_drop(&mut self, data: DropData, next: DropIdx) -> DropIdx {
290-
let drops = &mut self.drops;
290+
let drop_nodes = &mut self.drop_nodes;
291291
*self
292292
.existing_drops_map
293293
.entry(DropNodeKey { next, local: data.local })
294294
// Create a new node, and also add its index to the map.
295-
.or_insert_with(|| drops.push(DropNode { data, next }))
295+
.or_insert_with(|| drop_nodes.push(DropNode { data, next }))
296296
}
297297

298298
/// Registers `from` as an entry point to this drop tree, at `to`.
299299
///
300300
/// During [`Self::build_mir`], `from` will be linked to the corresponding
301301
/// block within the drop tree.
302302
fn add_entry_point(&mut self, from: BasicBlock, to: DropIdx) {
303-
debug_assert!(to < self.drops.next_index());
303+
debug_assert!(to < self.drop_nodes.next_index());
304304
self.entry_points.push((to, from));
305305
}
306306

@@ -340,10 +340,10 @@ impl DropTree {
340340
Own,
341341
}
342342

343-
let mut blocks = IndexVec::from_elem(None, &self.drops);
343+
let mut blocks = IndexVec::from_elem(None, &self.drop_nodes);
344344
blocks[ROOT_NODE] = root_node;
345345

346-
let mut needs_block = IndexVec::from_elem(Block::None, &self.drops);
346+
let mut needs_block = IndexVec::from_elem(Block::None, &self.drop_nodes);
347347
if root_node.is_some() {
348348
// In some cases (such as drops for `continue`) the root node
349349
// already has a block. In this case, make sure that we don't
@@ -355,7 +355,7 @@ impl DropTree {
355355
let entry_points = &mut self.entry_points;
356356
entry_points.sort();
357357

358-
for (drop_idx, drop_node) in self.drops.iter_enumerated().rev() {
358+
for (drop_idx, drop_node) in self.drop_nodes.iter_enumerated().rev() {
359359
if entry_points.last().is_some_and(|entry_point| entry_point.0 == drop_idx) {
360360
let block = *blocks[drop_idx].get_or_insert_with(|| T::make_block(cfg));
361361
needs_block[drop_idx] = Block::Own;
@@ -395,7 +395,7 @@ impl DropTree {
395395
cfg: &mut CFG<'tcx>,
396396
blocks: &IndexSlice<DropIdx, Option<BasicBlock>>,
397397
) {
398-
for (drop_idx, drop_node) in self.drops.iter_enumerated().rev() {
398+
for (drop_idx, drop_node) in self.drop_nodes.iter_enumerated().rev() {
399399
let Some(block) = blocks[drop_idx] else { continue };
400400
match drop_node.data.kind {
401401
DropKind::Value => {
@@ -828,9 +828,15 @@ impl<'a, 'tcx> Builder<'a, 'tcx> {
828828
// `unwind_to` should drop the value that we're about to
829829
// schedule. If dropping this value panics, then we continue
830830
// with the *next* value on the unwind path.
831-
debug_assert_eq!(unwind_drops.drops[unwind_to].data.local, drop_data.local);
832-
debug_assert_eq!(unwind_drops.drops[unwind_to].data.kind, drop_data.kind);
833-
unwind_to = unwind_drops.drops[unwind_to].next;
831+
debug_assert_eq!(
832+
unwind_drops.drop_nodes[unwind_to].data.local,
833+
drop_data.local
834+
);
835+
debug_assert_eq!(
836+
unwind_drops.drop_nodes[unwind_to].data.kind,
837+
drop_data.kind
838+
);
839+
unwind_to = unwind_drops.drop_nodes[unwind_to].next;
834840

835841
let mut unwind_entry_point = unwind_to;
836842

@@ -1550,14 +1556,14 @@ where
15501556
//
15511557
// We adjust this BEFORE we create the drop (e.g., `drops[n]`)
15521558
// because `drops[n]` should unwind to `drops[n-1]`.
1553-
debug_assert_eq!(unwind_drops.drops[unwind_to].data.local, drop_data.local);
1554-
debug_assert_eq!(unwind_drops.drops[unwind_to].data.kind, drop_data.kind);
1555-
unwind_to = unwind_drops.drops[unwind_to].next;
1559+
debug_assert_eq!(unwind_drops.drop_nodes[unwind_to].data.local, drop_data.local);
1560+
debug_assert_eq!(unwind_drops.drop_nodes[unwind_to].data.kind, drop_data.kind);
1561+
unwind_to = unwind_drops.drop_nodes[unwind_to].next;
15561562

15571563
if let Some(idx) = dropline_to {
1558-
debug_assert_eq!(coroutine_drops.drops[idx].data.local, drop_data.local);
1559-
debug_assert_eq!(coroutine_drops.drops[idx].data.kind, drop_data.kind);
1560-
dropline_to = Some(coroutine_drops.drops[idx].next);
1564+
debug_assert_eq!(coroutine_drops.drop_nodes[idx].data.local, drop_data.local);
1565+
debug_assert_eq!(coroutine_drops.drop_nodes[idx].data.kind, drop_data.kind);
1566+
dropline_to = Some(coroutine_drops.drop_nodes[idx].next);
15611567
}
15621568

15631569
// If the operand has been moved, and we are not on an unwind
@@ -1597,9 +1603,12 @@ where
15971603
// cases we emit things ALSO on the unwind path, so we need to adjust
15981604
// `unwind_to` in that case.
15991605
if storage_dead_on_unwind {
1600-
debug_assert_eq!(unwind_drops.drops[unwind_to].data.local, drop_data.local);
1601-
debug_assert_eq!(unwind_drops.drops[unwind_to].data.kind, drop_data.kind);
1602-
unwind_to = unwind_drops.drops[unwind_to].next;
1606+
debug_assert_eq!(
1607+
unwind_drops.drop_nodes[unwind_to].data.local,
1608+
drop_data.local
1609+
);
1610+
debug_assert_eq!(unwind_drops.drop_nodes[unwind_to].data.kind, drop_data.kind);
1611+
unwind_to = unwind_drops.drop_nodes[unwind_to].next;
16031612
}
16041613

16051614
// If the operand has been moved, and we are not on an unwind
@@ -1628,14 +1637,17 @@ where
16281637
// the storage-dead has completed, we need to adjust the `unwind_to` pointer
16291638
// so that any future drops we emit will not register storage-dead.
16301639
if storage_dead_on_unwind {
1631-
debug_assert_eq!(unwind_drops.drops[unwind_to].data.local, drop_data.local);
1632-
debug_assert_eq!(unwind_drops.drops[unwind_to].data.kind, drop_data.kind);
1633-
unwind_to = unwind_drops.drops[unwind_to].next;
1640+
debug_assert_eq!(
1641+
unwind_drops.drop_nodes[unwind_to].data.local,
1642+
drop_data.local
1643+
);
1644+
debug_assert_eq!(unwind_drops.drop_nodes[unwind_to].data.kind, drop_data.kind);
1645+
unwind_to = unwind_drops.drop_nodes[unwind_to].next;
16341646
}
16351647
if let Some(idx) = dropline_to {
1636-
debug_assert_eq!(coroutine_drops.drops[idx].data.local, drop_data.local);
1637-
debug_assert_eq!(coroutine_drops.drops[idx].data.kind, drop_data.kind);
1638-
dropline_to = Some(coroutine_drops.drops[idx].next);
1648+
debug_assert_eq!(coroutine_drops.drop_nodes[idx].data.local, drop_data.local);
1649+
debug_assert_eq!(coroutine_drops.drop_nodes[idx].data.kind, drop_data.kind);
1650+
dropline_to = Some(coroutine_drops.drop_nodes[idx].next);
16391651
}
16401652
// Only temps and vars need their storage dead.
16411653
assert!(local.index() > arg_count);
@@ -1662,10 +1674,10 @@ impl<'a, 'tcx: 'a> Builder<'a, 'tcx> {
16621674
let is_coroutine = self.coroutine.is_some();
16631675

16641676
// Link the exit drop tree to unwind drop tree.
1665-
if drops.drops.iter().any(|drop_node| drop_node.data.kind == DropKind::Value) {
1677+
if drops.drop_nodes.iter().any(|drop_node| drop_node.data.kind == DropKind::Value) {
16661678
let unwind_target = self.diverge_cleanup_target(else_scope, span);
16671679
let mut unwind_indices = IndexVec::from_elem_n(unwind_target, 1);
1668-
for (drop_idx, drop_node) in drops.drops.iter_enumerated().skip(1) {
1680+
for (drop_idx, drop_node) in drops.drop_nodes.iter_enumerated().skip(1) {
16691681
match drop_node.data.kind {
16701682
DropKind::Storage | DropKind::ForLint => {
16711683
if is_coroutine {
@@ -1694,13 +1706,13 @@ impl<'a, 'tcx: 'a> Builder<'a, 'tcx> {
16941706
}
16951707
// Link the exit drop tree to dropline drop tree (coroutine drop path) for async drops
16961708
if is_coroutine
1697-
&& drops.drops.iter().any(|DropNode { data, next: _ }| {
1709+
&& drops.drop_nodes.iter().any(|DropNode { data, next: _ }| {
16981710
data.kind == DropKind::Value && self.is_async_drop(data.local)
16991711
})
17001712
{
17011713
let dropline_target = self.diverge_dropline_target(else_scope, span);
17021714
let mut dropline_indices = IndexVec::from_elem_n(dropline_target, 1);
1703-
for (drop_idx, drop_data) in drops.drops.iter_enumerated().skip(1) {
1715+
for (drop_idx, drop_data) in drops.drop_nodes.iter_enumerated().skip(1) {
17041716
match drop_data.data.kind {
17051717
DropKind::Storage | DropKind::ForLint => {
17061718
let coroutine_drop = self
@@ -1768,11 +1780,11 @@ impl<'a, 'tcx: 'a> Builder<'a, 'tcx> {
17681780
// prevent drop elaboration from creating drop flags that would have
17691781
// to be captured by the coroutine. I'm not sure how important this
17701782
// optimization is, but it is here.
1771-
for (drop_idx, drop_node) in drops.drops.iter_enumerated() {
1783+
for (drop_idx, drop_node) in drops.drop_nodes.iter_enumerated() {
17721784
if let DropKind::Value = drop_node.data.kind
17731785
&& let Some(bb) = blocks[drop_idx]
17741786
{
1775-
debug_assert!(drop_node.next < drops.drops.next_index());
1787+
debug_assert!(drop_node.next < drops.drop_nodes.next_index());
17761788
drops.entry_points.push((drop_node.next, bb));
17771789
}
17781790
}

0 commit comments

Comments
 (0)