Struct miri::interpret::Allocation
source · pub struct Allocation<Prov = AllocId, Extra = (), Bytes = Box<[u8], Global>>where
Prov: Provenance,{
bytes: Bytes,
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: Bytes
§provenance: ProvenanceMap<Prov>
§init_mask: InitMask
§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.
Trait Implementations§
source§impl VisitTags for Allocation<Provenance, AllocExtra<'_>>
impl VisitTags for Allocation<Provenance, AllocExtra<'_>>
Auto Trait Implementations§
impl<Prov, Extra, Bytes> RefUnwindSafe for Allocation<Prov, Extra, Bytes>where Bytes: RefUnwindSafe, Extra: RefUnwindSafe, Prov: RefUnwindSafe,
impl<Prov, Extra, Bytes> Send for Allocation<Prov, Extra, Bytes>where Bytes: Send, Extra: Send, Prov: Send,
impl<Prov, Extra, Bytes> Sync for Allocation<Prov, Extra, Bytes>where Bytes: Sync, Extra: Sync, Prov: Sync,
impl<Prov, Extra, Bytes> Unpin for Allocation<Prov, Extra, Bytes>where Bytes: Unpin, Extra: Unpin, Prov: Unpin,
impl<Prov, Extra, Bytes> UnwindSafe for Allocation<Prov, Extra, Bytes>where Bytes: UnwindSafe, Extra: UnwindSafe, Prov: UnwindSafe,
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
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.