Update rustc for AllocationExtra trait

Based on https://github.com/solson/miri/pull/493 but there were more conflicts
than code so I opted not to cherry-pick.
This commit is contained in:
Ralf Jung 2018-11-12 08:54:12 +01:00
parent f233dc0687
commit e7aa5c68ff
3 changed files with 12 additions and 27 deletions

View file

@ -1 +1 @@
nightly-2018-11-08
nightly-2018-11-12

View file

@ -446,24 +446,6 @@ impl<'a, 'mir, 'tcx> Machine<'a, 'mir, 'tcx> for Evaluator<'tcx> {
Cow::Owned(alloc)
}
#[inline(always)]
fn memory_read(
alloc: &Allocation<Borrow, Self::AllocExtra>,
ptr: Pointer<Borrow>,
size: Size,
) -> EvalResult<'tcx> {
alloc.extra.memory_read(ptr, size)
}
#[inline(always)]
fn memory_written(
alloc: &mut Allocation<Borrow, Self::AllocExtra>,
ptr: Pointer<Borrow>,
size: Size,
) -> EvalResult<'tcx> {
alloc.extra.memory_written(ptr, size)
}
#[inline(always)]
fn memory_deallocated(
alloc: &mut Allocation<Borrow, Self::AllocExtra>,

View file

@ -5,7 +5,7 @@ use rustc::hir;
use crate::{
EvalResult, MiriEvalContext, HelpersEvalContextExt,
MemoryKind, MiriMemoryKind, RangeMap, AllocId,
MemoryKind, MiriMemoryKind, RangeMap, AllocId, Allocation, AllocationExtra,
Pointer, PlaceTy, MPlaceTy,
};
@ -343,27 +343,30 @@ impl<'tcx> Stacks {
}
/// Hooks and glue
impl<'tcx> Stacks {
impl AllocationExtra<Borrow> for Stacks {
#[inline(always)]
pub fn memory_read(
&self,
fn memory_read<'tcx>(
alloc: &Allocation<Borrow, Stacks>,
ptr: Pointer<Borrow>,
size: Size,
) -> EvalResult<'tcx> {
// Reads behave exactly like the first half of a reborrow-to-shr
self.use_and_maybe_re_borrow(ptr, size, UsageKind::Read, None)
alloc.extra.use_and_maybe_re_borrow(ptr, size, UsageKind::Read, None)
}
#[inline(always)]
pub fn memory_written(
&mut self,
fn memory_written<'tcx>(
alloc: &mut Allocation<Borrow, Stacks>,
ptr: Pointer<Borrow>,
size: Size,
) -> EvalResult<'tcx> {
// Writes behave exactly like the first half of a reborrow-to-mut
self.use_and_maybe_re_borrow(ptr, size, UsageKind::Write, None)
alloc.extra.use_and_maybe_re_borrow(ptr, size, UsageKind::Write, None)
}
}
impl<'tcx> Stacks {
#[inline(always)]
pub fn memory_deallocated(
&mut self,
ptr: Pointer<Borrow>,