Revert "disable validation code so that it all compiles against current nightly"

This reverts commit 791dbaf584.
This commit is contained in:
Ralf Jung
2017-07-26 14:41:08 -07:00
parent 726b027ba3
commit dd533a9ec6
5 changed files with 11 additions and 35 deletions
+1
View File
@@ -202,6 +202,7 @@ fn main() {
// for auxilary builds in unit tests
args.push("-Zalways-encode-mir".to_owned());
args.push("-Zmir-emit-validate".to_owned());
rustc_driver::run_compiler(&args, &mut MiriCompilerCalls(RustcDefaultCalls), None, None);
}
@@ -37,8 +37,6 @@ pub struct EvalContext<'a, 'tcx: 'a, M: Machine<'tcx>> {
/// The virtual memory system.
pub memory: Memory<'a, 'tcx, M>,
#[allow(dead_code)]
// FIXME(@RalfJung): validation branch
/// Lvalues that were suspended by the validation subsystem, and will be recovered later
pub(crate) suspended: HashMap<DynamicLifetime, Vec<ValidationQuery<'tcx>>>,
-10
View File
@@ -35,8 +35,6 @@ pub struct MemoryRange {
}
impl MemoryRange {
#[allow(dead_code)]
// FIXME(@RalfJung): validation branch
pub fn new(offset: u64, len: u64) -> MemoryRange {
assert!(len > 0);
MemoryRange {
@@ -61,8 +59,6 @@ pub fn range(offset: u64, len: u64) -> ops::Range<MemoryRange> {
left..right
}
#[allow(dead_code)]
// FIXME(@RalfJung): validation branch
pub fn contained_in(&self, offset: u64, len: u64) -> bool {
assert!(len > 0);
offset <= self.start && self.end <= (offset + len)
@@ -143,8 +139,6 @@ fn iter_locks<'a>(&'a self, offset: u64, len: u64) -> impl Iterator<Item=(&'a Me
.filter(move |&(range, _)| range.overlaps(offset, len))
}
#[allow(dead_code)]
// FIXME(@RalfJung): validation branch
fn iter_locks_mut<'a>(&'a mut self, offset: u64, len: u64) -> impl Iterator<Item=(&'a MemoryRange, &'a mut LockInfo)> + 'a {
self.locks.range_mut(MemoryRange::range(offset, len))
.filter(move |&(range, _)| range.overlaps(offset, len))
@@ -474,8 +468,6 @@ pub(crate) fn check_locks(&self, ptr: MemoryPointer, len: u64, access: AccessKin
.map_err(|lock| EvalErrorKind::MemoryLockViolation { ptr, len, frame, access, lock }.into())
}
#[allow(dead_code)]
// FIXME(@RalfJung): validation branch
/// Acquire the lock for the given lifetime
pub(crate) fn acquire_lock(&mut self, ptr: MemoryPointer, len: u64, region: Option<CodeExtent>, kind: AccessKind) -> EvalResult<'tcx> {
use std::collections::btree_map::Entry::*;
@@ -504,8 +496,6 @@ pub(crate) fn acquire_lock(&mut self, ptr: MemoryPointer, len: u64, region: Opti
Ok(())
}
#[allow(dead_code)]
// FIXME(@RalfJung): validation branch
/// Release a write lock prematurely. If there's a read lock or someone else's lock, fail.
pub(crate) fn release_write_lock(&mut self, ptr: MemoryPointer, len: u64) -> EvalResult<'tcx> {
assert!(len > 0);
+9 -2
View File
@@ -133,8 +133,15 @@ fn statement(&mut self, stmt: &mir::Statement<'tcx>) -> EvalResult<'tcx> {
self.deallocate_local(old_val)?;
}
// NOPs for now.
EndRegion(_ce) => {}
// Validity checks.
Validate(op, ref lvalues) => {
for operand in lvalues {
self.validation_op(op, operand)?;
}
}
EndRegion(ce) => {
self.end_region(ce)?;
}
// Defined to do nothing. These are added by optimization passes, to avoid changing the
// size of MIR constantly.
+1 -21
View File
@@ -1,9 +1,6 @@
// code for @RalfJung's validation branch is dead for now
#![allow(dead_code)]
use rustc::hir::Mutability;
use rustc::hir::Mutability::*;
use rustc::mir;
use rustc::mir::{self, ValidationOp, ValidationOperand};
use rustc::ty::{self, Ty, TypeFoldable};
use rustc::ty::subst::Subst;
use rustc::traits::Reveal;
@@ -19,23 +16,6 @@
Machine,
};
// FIXME remove this once it lands in rustc
#[derive(Copy, Clone, PartialEq, Eq)]
pub enum ValidationOp {
Acquire,
Release,
Suspend(CodeExtent),
}
#[derive(Clone, Debug)]
pub struct ValidationOperand<'tcx, T> {
pub lval: T,
pub ty: Ty<'tcx>,
pub re: Option<CodeExtent>,
pub mutbl: Mutability,
}
// FIXME end
pub type ValidationQuery<'tcx> = ValidationOperand<'tcx, Lvalue<'tcx>>;
#[derive(Copy, Clone, Debug)]