@@ -7,7 +7,7 @@ use std::hash::Hash;
77
88use rustc:: mir;
99use rustc:: ty:: { self , Ty } ;
10- use rustc_span:: Span ;
10+ use rustc_span:: { def_id :: DefId , Span } ;
1111
1212use super :: {
1313 AllocId , Allocation , AllocationExtra , Frame , ImmTy , InterpCx , InterpResult , Memory , MemoryKind ,
@@ -79,7 +79,7 @@ pub trait AllocMap<K: Hash + Eq, V> {
7979/// and some use case dependent behaviour can instead be applied.
8080pub trait Machine < ' mir , ' tcx > : Sized {
8181 /// Additional memory kinds a machine wishes to distinguish from the builtin ones
82- type MemoryKinds : :: std:: fmt:: Debug + MayLeak + Eq + ' static ;
82+ type MemoryKind : :: std:: fmt:: Debug + MayLeak + Eq + ' static ;
8383
8484 /// Tag tracked alongside every pointer. This is used to implement "Stacked Borrows"
8585 /// <https://www.ralfj.de/blog/2018/08/07/stacked-borrows.html>.
@@ -105,16 +105,17 @@ pub trait Machine<'mir, 'tcx>: Sized {
105105 /// Memory's allocation map
106106 type MemoryMap : AllocMap <
107107 AllocId ,
108- ( MemoryKind < Self :: MemoryKinds > , Allocation < Self :: PointerTag , Self :: AllocExtra > ) ,
108+ ( MemoryKind < Self :: MemoryKind > , Allocation < Self :: PointerTag , Self :: AllocExtra > ) ,
109109 > + Default
110110 + Clone ;
111111
112- /// The memory kind to use for copied statics -- or None if statics should not be mutated
113- /// and thus any such attempt will cause a `ModifiedStatic` error to be raised.
112+ /// The memory kind to use for copied global memory (held in `tcx`) --
113+ /// or None if such memory should not be mutated and thus any such attempt will cause
114+ /// a `ModifiedStatic` error to be raised.
114115 /// Statics are copied under two circumstances: When they are mutated, and when
115- /// `tag_allocation` or `find_foreign_static` (see below) returns an owned allocation
116+ /// `tag_allocation` (see below) returns an owned allocation
116117 /// that is added to the memory so that the work is not done twice.
117- const STATIC_KIND : Option < Self :: MemoryKinds > ;
118+ const GLOBAL_KIND : Option < Self :: MemoryKind > ;
118119
119120 /// Whether memory accesses should be alignment-checked.
120121 const CHECK_ALIGN : bool ;
@@ -207,11 +208,15 @@ pub trait Machine<'mir, 'tcx>: Sized {
207208 Ok ( ( ) )
208209 }
209210
210- /// Called before a `Static` value is accessed.
211+ /// Called before a global allocation is accessed.
212+ /// `def_id` is `Some` if this is the "lazy" allocation of a static.
211213 #[ inline]
212- fn before_access_static (
214+ fn before_access_global (
213215 _memory_extra : & Self :: MemoryExtra ,
216+ _alloc_id : AllocId ,
214217 _allocation : & Allocation ,
218+ _def_id : Option < DefId > ,
219+ _is_write : bool ,
215220 ) -> InterpResult < ' tcx > {
216221 Ok ( ( ) )
217222 }
@@ -231,10 +236,10 @@ pub trait Machine<'mir, 'tcx>: Sized {
231236 /// it contains (in relocations) tagged. The way we construct allocations is
232237 /// to always first construct it without extra and then add the extra.
233238 /// This keeps uniform code paths for handling both allocations created by CTFE
234- /// for statics , and allocations created by Miri during evaluation.
239+ /// for globals , and allocations created by Miri during evaluation.
235240 ///
236241 /// `kind` is the kind of the allocation being tagged; it can be `None` when
237- /// it's a static and `STATIC_KIND ` is `None`.
242+ /// it's a global and `GLOBAL_KIND ` is `None`.
238243 ///
239244 /// This should avoid copying if no work has to be done! If this returns an owned
240245 /// allocation (because a copy had to be done to add tags or metadata), machine memory will
@@ -243,20 +248,20 @@ pub trait Machine<'mir, 'tcx>: Sized {
243248 ///
244249 /// Also return the "base" tag to use for this allocation: the one that is used for direct
245250 /// accesses to this allocation. If `kind == STATIC_KIND`, this tag must be consistent
246- /// with `tag_static_base_pointer `.
251+ /// with `tag_global_base_pointer `.
247252 fn init_allocation_extra < ' b > (
248253 memory_extra : & Self :: MemoryExtra ,
249254 id : AllocId ,
250255 alloc : Cow < ' b , Allocation > ,
251- kind : Option < MemoryKind < Self :: MemoryKinds > > ,
256+ kind : Option < MemoryKind < Self :: MemoryKind > > ,
252257 ) -> ( Cow < ' b , Allocation < Self :: PointerTag , Self :: AllocExtra > > , Self :: PointerTag ) ;
253258
254- /// Return the "base" tag for the given *static * allocation: the one that is used for direct
255- /// accesses to this static/const/fn allocation. If `id` is not a static allocation,
259+ /// Return the "base" tag for the given *global * allocation: the one that is used for direct
260+ /// accesses to this static/const/fn allocation. If `id` is not a global allocation,
256261 /// this will return an unusable tag (i.e., accesses will be UB)!
257262 ///
258263 /// Expects `id` to be already canonical, if needed.
259- fn tag_static_base_pointer ( memory_extra : & Self :: MemoryExtra , id : AllocId ) -> Self :: PointerTag ;
264+ fn tag_global_base_pointer ( memory_extra : & Self :: MemoryExtra , id : AllocId ) -> Self :: PointerTag ;
260265
261266 /// Executes a retagging operation
262267 #[ inline]
0 commit comments