Module allocation

Source
Expand description

The virtual memory representation of the MIR interpreter.

Re-exports§

pub use init_mask::InitChunk;
pub use init_mask::InitChunkIter;

Modules§

init_mask 🔒
provenance_map 🔒
Store the provenance for each byte in the range, with a more efficient representation for the common case where PTR_SIZE consecutive bytes have the same provenance.

Structs§

AllocRange
The information that makes up a memory access: offset and size.
Allocation
This type represents an Allocation in the Miri/CTFE core engine.
ConstAllocation
Interned types generally have an Outer type and an Inner type, where Outer is a newtype around Interned<Inner>, and all the operations are done on Outer, because all occurrences are interned. E.g. Ty is an outer type and TyKind is its inner type.

Enums§

AllocError
We have our own error type that does not know about the AllocId; that information is added when converting to InterpError.
AllocInit
Whether a new allocation should be initialized with zero-bytes.

Constants§

MAX_BYTES_TO_HASH 🔒
This is the maximum size we will hash at a time, when interning an Allocation and its InitMask. Note, we hash that amount of bytes twice: at the start, and at the end of a buffer. Used when these two structures are large: we only partially hash the larger fields in that situation. See the comment at the top of their respective Hash impl for more details.
MAX_HASHED_BUFFER_LEN 🔒
This is the maximum size (in bytes) for which a buffer will be fully hashed, when interning. Otherwise, it will be partially hashed in 2 slices, requiring at least 2 MAX_BYTES_TO_HASH bytes.

Traits§

AllocBytes
Functionality required for the bytes of an Allocation.

Functions§

alloc_range
Free-starting constructor for less syntactic overhead.

Type Aliases§

AllocResult