File tree Expand file tree Collapse file tree 2 files changed +11
-20
lines changed
compiler/rustc_data_structures/src/tagged_ptr Expand file tree Collapse file tree 2 files changed +11
-20
lines changed Original file line number Diff line number Diff line change @@ -115,19 +115,6 @@ where
115
115
unsafe { P :: from_ptr ( self . pointer_raw ( ) ) }
116
116
}
117
117
118
- pub fn pointer_ref ( & self ) -> & P :: Target {
119
- // SAFETY: pointer_raw returns the original pointer
120
- unsafe { self . pointer_raw ( ) . as_ref ( ) }
121
- }
122
-
123
- pub fn pointer_mut ( & mut self ) -> & mut P :: Target
124
- where
125
- P : DerefMut ,
126
- {
127
- // SAFETY: pointer_raw returns the original pointer
128
- unsafe { self . pointer_raw ( ) . as_mut ( ) }
129
- }
130
-
131
118
#[ inline]
132
119
pub fn tag ( & self ) -> T {
133
120
unsafe { T :: from_usize ( self . packed . addr ( ) . get ( ) >> Self :: TAG_BIT_SHIFT ) }
@@ -147,7 +134,10 @@ where
147
134
type Target = P :: Target ;
148
135
149
136
fn deref ( & self ) -> & Self :: Target {
150
- self . pointer_ref ( )
137
+ // Safety:
138
+ // `pointer_raw` returns the original pointer from `P::into_ptr` which,
139
+ // by the `Pointer`'s contract, must be valid.
140
+ unsafe { self . pointer_raw ( ) . as_ref ( ) }
151
141
}
152
142
}
153
143
@@ -157,7 +147,11 @@ where
157
147
T : Tag ,
158
148
{
159
149
fn deref_mut ( & mut self ) -> & mut Self :: Target {
160
- self . pointer_mut ( )
150
+ // Safety:
151
+ // `pointer_raw` returns the original pointer from `P::into_ptr` which,
152
+ // by the `Pointer`'s contract, must be valid for writes if
153
+ // `P: DerefMut`.
154
+ unsafe { self . pointer_raw ( ) . as_mut ( ) }
161
155
}
162
156
}
163
157
Original file line number Diff line number Diff line change 41
41
TaggedPtr { raw : CopyTaggedPtr :: new ( pointer, tag) }
42
42
}
43
43
44
- pub fn pointer_ref ( & self ) -> & P :: Target {
45
- self . raw . pointer_ref ( )
46
- }
47
44
pub fn tag ( & self ) -> T {
48
45
self . raw . tag ( )
49
46
}
56
53
{
57
54
type Target = P :: Target ;
58
55
fn deref ( & self ) -> & Self :: Target {
59
- self . raw . pointer_ref ( )
56
+ self . raw . deref ( )
60
57
}
61
58
}
62
59
66
63
T : Tag ,
67
64
{
68
65
fn deref_mut ( & mut self ) -> & mut Self :: Target {
69
- self . raw . pointer_mut ( )
66
+ self . raw . deref_mut ( )
70
67
}
71
68
}
72
69
You can’t perform that action at this time.
0 commit comments