Skip to content

Commit 2e77f8b

Browse files
committed
Move Condemned for Gc to mark.rs
TODO: We should be consistent and move the rest of local impls
1 parent bc219d6 commit 2e77f8b

File tree

2 files changed

+23
-21
lines changed

2 files changed

+23
-21
lines changed

src/gc.rs

Lines changed: 0 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -41,18 +41,3 @@ unsafe impl<'r, T: 'r + Trace> Trace for Gc<'r, T> {
4141
T::trace_transitive_type_info(tti)
4242
}
4343
}
44-
45-
unsafe impl<'r, T> Condemned for Gc<'r, T> {
46-
fn feilds(_: &Self, _: u8, _: std::ops::Range<usize>) -> u8 {
47-
0b0000_0000
48-
}
49-
const PRE_CONDTION: bool = true;
50-
fn evacuate<'e, E: FnMut(*const u8), const offset: u8>(
51-
s: &Self,
52-
grey_feilds: u8,
53-
region: std::ops::Range<usize>,
54-
handlers: Handlers<'e, E>,
55-
) {
56-
todo!()
57-
}
58-
}

src/mark.rs

Lines changed: 23 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,15 +13,15 @@ pub unsafe trait Mark<'o, 'n, 'r: 'n, O: 'o, N: 'r> {
1313

1414
// Blanket Arena<T> impl is in src/arena.rs
1515

16-
pub(crate) struct Handlers<'e, E: FnMut(*const u8)> {
16+
pub struct Handlers<'e, E: FnMut(*const u8)> {
1717
// TODO benchmark sizes
1818
translation: &'e SmallVec<[u8; 16]>,
1919
effects: &'e mut SmallVec<[E; 4]>,
2020
}
2121

2222
pub unsafe trait Condemned {
2323
fn feilds(s: &Self, grey_feilds: u8, region: Range<usize>) -> u8;
24-
fn evacuate<'e, E: FnMut(*const u8), const offset: u8>(
24+
fn evacuate<'e, E: FnMut(*const u8), const OFFSET: u8>(
2525
s: &Self,
2626
grey_feilds: u8,
2727
region: Range<usize>,
@@ -42,8 +42,8 @@ unsafe impl<T> Condemned for T {
4242
}
4343
}
4444

45-
default fn evacuate<'e, E: FnMut(*const u8), const offset: u8>(
46-
s: &Self,
45+
default fn evacuate<'e, E: FnMut(*const u8), const OFFSET: u8>(
46+
_: &Self,
4747
_: u8,
4848
_: Range<usize>,
4949
_: Handlers<'e, E>,
@@ -58,6 +58,23 @@ unsafe impl<T> Condemned for T {
5858
};
5959
}
6060

61+
unsafe impl<'r, T> Condemned for Gc<'r, T> {
62+
fn feilds(_: &Self, _: u8, _: std::ops::Range<usize>) -> u8 {
63+
0b0000_0000
64+
}
65+
const PRE_CONDTION: bool = true;
66+
fn evacuate<'e, E: FnMut(*const u8), const OFFSET: u8>(
67+
s: &Self,
68+
grey_feilds: u8,
69+
region: std::ops::Range<usize>,
70+
handlers: Handlers<'e, E>,
71+
) {
72+
todo!()
73+
}
74+
}
75+
76+
// std impls
77+
6178
unsafe impl<T> Condemned for Option<T> {
6279
default fn feilds(s: &Self, grey_feilds: u8, region: Range<usize>) -> u8 {
6380
match s {
@@ -66,14 +83,14 @@ unsafe impl<T> Condemned for Option<T> {
6683
}
6784
}
6885

69-
fn evacuate<'e, E: FnMut(*const u8), const offset: u8>(
86+
fn evacuate<'e, E: FnMut(*const u8), const OFFSET: u8>(
7087
s: &Self,
7188
grey_feilds: u8,
7289
region: Range<usize>,
7390
handlers: Handlers<'e, E>,
7491
) {
7592
match s {
76-
Some(t) => Condemned::evacuate(t, grey_feilds, region, handlers),
93+
Some(t) => Condemned::evacuate::<E, OFFSET>(t, grey_feilds, region, handlers),
7794
None => (),
7895
}
7996
}

0 commit comments

Comments
 (0)