Allow non-Box
allocations in preparation for aligned const allocations for miri. Credit to emarteca for the code.
This commit is contained in:
parent
267cd1d2c5
commit
6f407d67b8
6 changed files with 120 additions and 48 deletions
|
@ -16,7 +16,7 @@ use rustc_target::spec::abi::Abi as CallAbi;
|
|||
use crate::const_eval::CheckAlignment;
|
||||
|
||||
use super::{
|
||||
AllocId, AllocRange, Allocation, ConstAllocation, Frame, ImmTy, InterpCx, InterpResult,
|
||||
AllocId, AllocRange, Allocation, AllocBytes, ConstAllocation, Frame, ImmTy, InterpCx, InterpResult,
|
||||
MemoryKind, OpTy, Operand, PlaceTy, Pointer, Provenance, Scalar, StackPopUnwind,
|
||||
};
|
||||
|
||||
|
@ -105,10 +105,13 @@ pub trait Machine<'mir, 'tcx>: Sized {
|
|||
/// Extra data stored in every allocation.
|
||||
type AllocExtra: Debug + Clone + 'static;
|
||||
|
||||
/// Type for the bytes of the allocation.
|
||||
type Bytes: AllocBytes + 'static;
|
||||
|
||||
/// Memory's allocation map
|
||||
type MemoryMap: AllocMap<
|
||||
AllocId,
|
||||
(MemoryKind<Self::MemoryKind>, Allocation<Self::Provenance, Self::AllocExtra>),
|
||||
(MemoryKind<Self::MemoryKind>, Allocation<Self::Provenance, Self::AllocExtra, Self::Bytes>),
|
||||
> + Default
|
||||
+ Clone;
|
||||
|
||||
|
@ -338,7 +341,7 @@ pub trait Machine<'mir, 'tcx>: Sized {
|
|||
id: AllocId,
|
||||
alloc: Cow<'b, Allocation>,
|
||||
kind: Option<MemoryKind<Self::MemoryKind>>,
|
||||
) -> InterpResult<'tcx, Cow<'b, Allocation<Self::Provenance, Self::AllocExtra>>>;
|
||||
) -> InterpResult<'tcx, Cow<'b, Allocation<Self::Provenance, Self::AllocExtra, Self::Bytes>>>;
|
||||
|
||||
fn eval_inline_asm(
|
||||
_ecx: &mut InterpCx<'mir, 'tcx, Self>,
|
||||
|
@ -459,6 +462,7 @@ pub macro compile_time_machine(<$mir: lifetime, $tcx: lifetime>) {
|
|||
|
||||
type AllocExtra = ();
|
||||
type FrameExtra = ();
|
||||
type Bytes = Box<[u8]>;
|
||||
|
||||
#[inline(always)]
|
||||
fn use_addr_for_alignment_check(_ecx: &InterpCx<$mir, $tcx, Self>) -> bool {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue