Struct miri::interpret::Allocation
source · pub struct Allocation<Prov = AllocId, Extra = ()> {
bytes: Box<[u8], Global>,
provenance: ProvenanceMap<Prov>,
init_mask: InitMask,
pub align: Align,
pub mutability: Mutability,
pub extra: Extra,
}
Expand description
This type represents an Allocation in the Miri/CTFE core engine.
Its public API is rather low-level, working directly with allocation offsets and a custom error
type to account for the lack of an AllocId on this level. The Miri/CTFE core engine memory
module provides higher-level access.
Fields
bytes: Box<[u8], Global>
The actual bytes of the allocation. Note that the bytes of a pointer represent the offset of the pointer.
provenance: ProvenanceMap<Prov>
Maps from byte addresses to extra provenance data for each pointer.
Only the first byte of a pointer is inserted into the map; i.e.,
every entry in this map applies to pointer_size
consecutive bytes starting
at the given offset.
init_mask: InitMask
Denotes which part of this allocation is initialized.
align: Align
The alignment of the allocation to detect unaligned reads.
(Align
guarantees that this is a power of two.)
mutability: Mutability
true
if the allocation is mutable.
Also used by codegen to determine if a static should be put into mutable memory,
which happens for static mut
and static
with interior mutability.
extra: Extra
Extra state for the machine.
Auto Trait Implementations
impl<Prov, Extra> RefUnwindSafe for Allocation<Prov, Extra>where
Extra: RefUnwindSafe,
Prov: RefUnwindSafe,
impl<Prov, Extra> Send for Allocation<Prov, Extra>where
Extra: Send,
Prov: Send,
impl<Prov, Extra> Sync for Allocation<Prov, Extra>where
Extra: Sync,
Prov: Sync,
impl<Prov, Extra> Unpin for Allocation<Prov, Extra>where
Extra: Unpin,
Prov: Unpin,
impl<Prov, Extra> UnwindSafe for Allocation<Prov, Extra>where
Extra: UnwindSafe,
Prov: UnwindSafe,
Blanket Implementations
sourceimpl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<V, T> VZip<V> for Twhere
V: MultiLane<T>,
impl<V, T> VZip<V> for Twhere
V: MultiLane<T>,
fn vzip(self) -> V
Layout
Note: Unable to compute type layout, possibly due to this type having generic parameters. Layout can only be computed for concrete, fully-instantiated types.