@@ -13,15 +13,15 @@ pub unsafe trait Mark<'o, 'n, 'r: 'n, O: 'o, N: 'r> {
13
13
14
14
// Blanket Arena<T> impl is in src/arena.rs
15
15
16
- pub ( crate ) struct Handlers < ' e , E : FnMut ( * const u8 ) > {
16
+ pub struct Handlers < ' e , E : FnMut ( * const u8 ) > {
17
17
// TODO benchmark sizes
18
18
translation : & ' e SmallVec < [ u8 ; 16 ] > ,
19
19
effects : & ' e mut SmallVec < [ E ; 4 ] > ,
20
20
}
21
21
22
22
pub unsafe trait Condemned {
23
23
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 > (
25
25
s : & Self ,
26
26
grey_feilds : u8 ,
27
27
region : Range < usize > ,
@@ -42,8 +42,8 @@ unsafe impl<T> Condemned for T {
42
42
}
43
43
}
44
44
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 ,
47
47
_: u8 ,
48
48
_: Range < usize > ,
49
49
_: Handlers < ' e , E > ,
@@ -58,6 +58,23 @@ unsafe impl<T> Condemned for T {
58
58
} ;
59
59
}
60
60
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
+
61
78
unsafe impl < T > Condemned for Option < T > {
62
79
default fn feilds ( s : & Self , grey_feilds : u8 , region : Range < usize > ) -> u8 {
63
80
match s {
@@ -66,14 +83,14 @@ unsafe impl<T> Condemned for Option<T> {
66
83
}
67
84
}
68
85
69
- fn evacuate < ' e , E : FnMut ( * const u8 ) , const offset : u8 > (
86
+ fn evacuate < ' e , E : FnMut ( * const u8 ) , const OFFSET : u8 > (
70
87
s : & Self ,
71
88
grey_feilds : u8 ,
72
89
region : Range < usize > ,
73
90
handlers : Handlers < ' e , E > ,
74
91
) {
75
92
match s {
76
- Some ( t) => Condemned :: evacuate ( t, grey_feilds, region, handlers) ,
93
+ Some ( t) => Condemned :: evacuate :: < E , OFFSET > ( t, grey_feilds, region, handlers) ,
77
94
None => ( ) ,
78
95
}
79
96
}
0 commit comments