Skip to content

Commit 0695853

Browse files
committed
fixes to tag_gc
1 parent ad0347a commit 0695853

File tree

1 file changed

+23
-24
lines changed

1 file changed

+23
-24
lines changed

src/tag_gc.rs

Lines changed: 23 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -3,53 +3,53 @@ use rustc_data_structures::fx::FxHashSet;
33
use crate::*;
44

55
pub trait VisitTags {
6-
fn visit_tags(&self, visit: &mut dyn FnMut(SbTag));
6+
fn visit_tags(&self, visit: &mut dyn FnMut(BorTag));
77
}
88

99
impl<T: VisitTags> VisitTags for Option<T> {
10-
fn visit_tags(&self, visit: &mut dyn FnMut(SbTag)) {
10+
fn visit_tags(&self, visit: &mut dyn FnMut(BorTag)) {
1111
if let Some(x) = self {
1212
x.visit_tags(visit);
1313
}
1414
}
1515
}
1616

1717
impl<T: VisitTags> VisitTags for std::cell::RefCell<T> {
18-
fn visit_tags(&self, visit: &mut dyn FnMut(SbTag)) {
18+
fn visit_tags(&self, visit: &mut dyn FnMut(BorTag)) {
1919
self.borrow().visit_tags(visit)
2020
}
2121
}
2222

23-
impl VisitTags for SbTag {
24-
fn visit_tags(&self, visit: &mut dyn FnMut(SbTag)) {
23+
impl VisitTags for BorTag {
24+
fn visit_tags(&self, visit: &mut dyn FnMut(BorTag)) {
2525
visit(*self)
2626
}
2727
}
2828

2929
impl VisitTags for Provenance {
30-
fn visit_tags(&self, visit: &mut dyn FnMut(SbTag)) {
31-
if let Provenance::Concrete { sb, .. } = self {
32-
visit(*sb);
30+
fn visit_tags(&self, visit: &mut dyn FnMut(BorTag)) {
31+
if let Provenance::Concrete { tag, .. } = self {
32+
visit(*tag);
3333
}
3434
}
3535
}
3636

3737
impl VisitTags for Pointer<Provenance> {
38-
fn visit_tags(&self, visit: &mut dyn FnMut(SbTag)) {
38+
fn visit_tags(&self, visit: &mut dyn FnMut(BorTag)) {
3939
let (prov, _offset) = self.into_parts();
4040
prov.visit_tags(visit);
4141
}
4242
}
4343

4444
impl VisitTags for Pointer<Option<Provenance>> {
45-
fn visit_tags(&self, visit: &mut dyn FnMut(SbTag)) {
45+
fn visit_tags(&self, visit: &mut dyn FnMut(BorTag)) {
4646
let (prov, _offset) = self.into_parts();
4747
prov.visit_tags(visit);
4848
}
4949
}
5050

5151
impl VisitTags for Scalar<Provenance> {
52-
fn visit_tags(&self, visit: &mut dyn FnMut(SbTag)) {
52+
fn visit_tags(&self, visit: &mut dyn FnMut(BorTag)) {
5353
match self {
5454
Scalar::Ptr(ptr, _) => ptr.visit_tags(visit),
5555
Scalar::Int(_) => (),
@@ -58,7 +58,7 @@ impl VisitTags for Scalar<Provenance> {
5858
}
5959

6060
impl VisitTags for Immediate<Provenance> {
61-
fn visit_tags(&self, visit: &mut dyn FnMut(SbTag)) {
61+
fn visit_tags(&self, visit: &mut dyn FnMut(BorTag)) {
6262
match self {
6363
Immediate::Scalar(s) => {
6464
s.visit_tags(visit);
@@ -73,7 +73,7 @@ impl VisitTags for Immediate<Provenance> {
7373
}
7474

7575
impl VisitTags for MemPlaceMeta<Provenance> {
76-
fn visit_tags(&self, visit: &mut dyn FnMut(SbTag)) {
76+
fn visit_tags(&self, visit: &mut dyn FnMut(BorTag)) {
7777
match self {
7878
MemPlaceMeta::Meta(m) => m.visit_tags(visit),
7979
MemPlaceMeta::None => {}
@@ -82,21 +82,21 @@ impl VisitTags for MemPlaceMeta<Provenance> {
8282
}
8383

8484
impl VisitTags for MemPlace<Provenance> {
85-
fn visit_tags(&self, visit: &mut dyn FnMut(SbTag)) {
85+
fn visit_tags(&self, visit: &mut dyn FnMut(BorTag)) {
8686
let MemPlace { ptr, meta } = self;
8787
ptr.visit_tags(visit);
8888
meta.visit_tags(visit);
8989
}
9090
}
9191

9292
impl VisitTags for MPlaceTy<'_, Provenance> {
93-
fn visit_tags(&self, visit: &mut dyn FnMut(SbTag)) {
93+
fn visit_tags(&self, visit: &mut dyn FnMut(BorTag)) {
9494
(**self).visit_tags(visit)
9595
}
9696
}
9797

9898
impl VisitTags for Place<Provenance> {
99-
fn visit_tags(&self, visit: &mut dyn FnMut(SbTag)) {
99+
fn visit_tags(&self, visit: &mut dyn FnMut(BorTag)) {
100100
match self {
101101
Place::Ptr(p) => p.visit_tags(visit),
102102
Place::Local { .. } => {
@@ -107,13 +107,13 @@ impl VisitTags for Place<Provenance> {
107107
}
108108

109109
impl VisitTags for PlaceTy<'_, Provenance> {
110-
fn visit_tags(&self, visit: &mut dyn FnMut(SbTag)) {
110+
fn visit_tags(&self, visit: &mut dyn FnMut(BorTag)) {
111111
(**self).visit_tags(visit)
112112
}
113113
}
114114

115115
impl VisitTags for Operand<Provenance> {
116-
fn visit_tags(&self, visit: &mut dyn FnMut(SbTag)) {
116+
fn visit_tags(&self, visit: &mut dyn FnMut(BorTag)) {
117117
match self {
118118
Operand::Immediate(imm) => {
119119
imm.visit_tags(visit);
@@ -126,7 +126,7 @@ impl VisitTags for Operand<Provenance> {
126126
}
127127

128128
impl VisitTags for Allocation<Provenance, AllocExtra> {
129-
fn visit_tags(&self, visit: &mut dyn FnMut(SbTag)) {
129+
fn visit_tags(&self, visit: &mut dyn FnMut(BorTag)) {
130130
for prov in self.provenance().provenances() {
131131
prov.visit_tags(visit);
132132
}
@@ -136,7 +136,7 @@ impl VisitTags for Allocation<Provenance, AllocExtra> {
136136
}
137137

138138
impl VisitTags for crate::MiriInterpCx<'_, '_> {
139-
fn visit_tags(&self, visit: &mut dyn FnMut(SbTag)) {
139+
fn visit_tags(&self, visit: &mut dyn FnMut(BorTag)) {
140140
// Memory.
141141
self.memory.alloc_map().iter(|it| {
142142
for (_id, (_kind, alloc)) in it {
@@ -154,7 +154,7 @@ pub trait EvalContextExt<'mir, 'tcx: 'mir>: MiriInterpCxExt<'mir, 'tcx> {
154154
fn garbage_collect_tags(&mut self) -> InterpResult<'tcx> {
155155
let this = self.eval_context_mut();
156156
// No reason to do anything at all if stacked borrows is off.
157-
if this.machine.stacked_borrows.is_none() {
157+
if !this.machine.borrow_tracker_method.is_active() {
158158
return Ok(());
159159
}
160160

@@ -167,16 +167,15 @@ pub trait EvalContextExt<'mir, 'tcx: 'mir>: MiriInterpCxExt<'mir, 'tcx> {
167167
Ok(())
168168
}
169169

170-
fn remove_unreachable_tags(&mut self, tags: FxHashSet<SbTag>) {
170+
fn remove_unreachable_tags(&mut self, tags: FxHashSet<BorTag>) {
171171
let this = self.eval_context_mut();
172172
this.memory.alloc_map().iter(|it| {
173173
for (_id, (_kind, alloc)) in it {
174174
alloc
175175
.extra
176-
.stacked_borrows
176+
.borrow_tracker
177177
.as_ref()
178178
.unwrap()
179-
.borrow_mut()
180179
.remove_unreachable_tags(&tags);
181180
}
182181
});

0 commit comments

Comments
 (0)