Skip to main content

Module machine

Module machine 

Source
Expand description

Global machine state as well as implementation of the interpreter engine Machine trait.

Re-exportsΒ§

use std::borrow::Cow; πŸ”’
use std::cell::RefCell; πŸ”’
use std::path::Path; πŸ”’
use std::path::PathBuf; πŸ”’
use std::rc::Rc; πŸ”’
use std::fmt; πŸ”’
use std::process; πŸ”’
use rand::rngs::StdRng; πŸ”’
use rand::RngExt; πŸ”’
use rand::SeedableRng; πŸ”’
use rustc_abi::Align; πŸ”’
use rustc_abi::ExternAbi; πŸ”’
use rustc_abi::Size; πŸ”’
use rustc_apfloat::Float; πŸ”’
use rustc_apfloat::FloatConvert; πŸ”’
use rustc_ast::Mutability; πŸ”’
use rustc_ast::expand::allocator; πŸ”’
use rustc_ast::expand::allocator::SpecialAllocatorMethod; πŸ”’
use rustc_attr_ir::InlineAttr; πŸ”’
use rustc_attr_ir::Linkage; πŸ”’
use rustc_data_structures::either::Either; πŸ”’
use rustc_data_structures::fx::FxHashMap; πŸ”’
use rustc_data_structures::fx::FxHashSet; πŸ”’
use rustc_data_structures::static_assert_size; πŸ”’
use rustc_hir::def::DefKind; πŸ”’
use rustc_log::tracing; πŸ”’
use rustc_middle::middle::codegen_fn_attrs::TargetFeatureKind; πŸ”’
use rustc_middle::mir; πŸ”’
use rustc_middle::query::TyCtxtAt; πŸ”’
use rustc_middle::ty::layout::HasTyCtxt; πŸ”’
use rustc_middle::ty::layout::HasTypingEnv; πŸ”’
use rustc_middle::ty::layout::LayoutCx; πŸ”’
use rustc_middle::ty::layout::LayoutError; πŸ”’
use rustc_middle::ty::layout::LayoutOf; πŸ”’
use rustc_middle::ty::layout::TyAndLayout; πŸ”’
use rustc_middle::ty; πŸ”’
use rustc_middle::ty::AtomicOrdering; πŸ”’
use rustc_middle::ty::Instance; πŸ”’
use rustc_middle::ty::Ty; πŸ”’
use rustc_middle::ty::TyCtxt; πŸ”’
use rustc_session::config::InliningThreshold; πŸ”’
use rustc_span::def_id::CrateNum; πŸ”’
use rustc_span::def_id::DefId; πŸ”’
use rustc_span::Span; πŸ”’
use rustc_span::Symbol; πŸ”’
use rustc_symbol_mangling::mangle_internal_symbol; πŸ”’
use rustc_target::callconv::FnAbi; πŸ”’
use rustc_target::spec::Arch; πŸ”’
use rustc_target::spec::Os; πŸ”’
use crate::alloc_addresses::EvalContextExt; πŸ”’
use crate::concurrency::data_race; πŸ”’
use crate::concurrency::data_race::NaReadType; πŸ”’
use crate::concurrency::data_race::NaWriteType; πŸ”’
use crate::concurrency::scheduler::DelayedCallbacks; πŸ”’
use crate::concurrency::AllocDataRaceHandler; πŸ”’
use crate::concurrency::GenmcCtx; πŸ”’
use crate::concurrency::GenmcEvalContextExt as _; πŸ”’
use crate::concurrency::GlobalDataRaceHandler; πŸ”’
use crate::concurrency::weak_memory; πŸ”’
use crate::data_structures::range_object_map::RangeObjectMap; πŸ”’
use crate::helpers::is_no_core; πŸ”’
use crate::*; πŸ”’

StructsΒ§

AllocExtra
Extra per-allocation data
FrameExtra
Extra data stored with each stack frame
MiriMachine
The machine itself.
PrimitiveLayouts
Precomputed layouts of primitive types

EnumsΒ§

AlignmentCheck
BacktraceStyle
FloatRoundingErrorMode
IsolatedOp
MiriMemoryKind
Extra memory kinds
Provenance
Pointer provenance.
ProvenanceExtra
The β€œextra” information a pointer has over a regular AllocId.
RejectOpWith
ValidationMode

ConstantsΒ§

ADDRS_PER_ANON_GLOBAL πŸ”’
Each anonymous global (constant, vtable, function pointer, …) has multiple addresses, but only this many. Since const allocations are never deallocated, choosing a new [AllocId] and thus base address for each evaluation would produce unbounded memory usage.
SIGRTMAX
Last real-time signal. signal(7) says it must be between 32 and 64 and specifies SIGRTMAX - SIGRTMIN >= 8 (which is the value of _POSIX_RTSIG_MAX)
SIGRTMIN
First real-time signal. signal(7) says this must be between 32 and 64 and specifies 34 or 35 as typical values.

TraitsΒ§

MachineCallback
Trait for callbacks handling asynchronous machine operations.
MiriInterpCxExt
A little trait that’s useful to be inherited by extension traits.

Type AliasesΒ§

DynMachineCallback
Type alias for boxed machine callbacks with generic argument type.
MemoryKind
MiriInterpCx
A rustc InterpCx for Miri.