Skip to content

Commit

Permalink
InterpCx: make memory field public
Browse files Browse the repository at this point in the history
  • Loading branch information
RalfJung committed Oct 11, 2019
1 parent d4f7f97 commit 715ffab
Show file tree
Hide file tree
Showing 3 changed files with 6 additions and 17 deletions.
12 changes: 1 addition & 11 deletions src/librustc_mir/interpret/eval_context.rs
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ pub struct InterpCx<'mir, 'tcx, M: Machine<'mir, 'tcx>> {
pub(crate) param_env: ty::ParamEnv<'tcx>,

/// The virtual memory system.
pub(crate) memory: Memory<'mir, 'tcx, M>,
pub memory: Memory<'mir, 'tcx, M>,

/// The virtual call stack.
pub(crate) stack: Vec<Frame<'mir, 'tcx, M::PointerTag, M::FrameExtra>>,
Expand Down Expand Up @@ -211,16 +211,6 @@ impl<'mir, 'tcx, M: Machine<'mir, 'tcx>> InterpCx<'mir, 'tcx, M> {
}
}

#[inline(always)]
pub fn memory(&self) -> &Memory<'mir, 'tcx, M> {
&self.memory
}

#[inline(always)]
pub fn memory_mut(&mut self) -> &mut Memory<'mir, 'tcx, M> {
&mut self.memory
}

#[inline(always)]
pub fn force_ptr(
&self,
Expand Down
7 changes: 3 additions & 4 deletions src/librustc_mir/interpret/intern.rs
Original file line number Diff line number Diff line change
Expand Up @@ -73,8 +73,7 @@ fn intern_shallow<'rt, 'mir, 'tcx>(
);
// remove allocation
let tcx = ecx.tcx;
let memory = ecx.memory_mut();
let (kind, mut alloc) = match memory.alloc_map.remove(&alloc_id) {
let (kind, mut alloc) = match ecx.memory.alloc_map.remove(&alloc_id) {
Some(entry) => entry,
None => {
// Pointer not found in local memory map. It is either a pointer to the global
Expand Down Expand Up @@ -332,7 +331,7 @@ pub fn intern_const_alloc_recursive(

let mut todo: Vec<_> = leftover_allocations.iter().cloned().collect();
while let Some(alloc_id) = todo.pop() {
if let Some((_, mut alloc)) = ecx.memory_mut().alloc_map.remove(&alloc_id) {
if let Some((_, mut alloc)) = ecx.memory.alloc_map.remove(&alloc_id) {
// We can't call the `intern_shallow` method here, as its logic is tailored to safe
// references and a `leftover_allocations` set (where we only have a todo-list here).
// So we hand-roll the interning logic here again.
Expand All @@ -350,7 +349,7 @@ pub fn intern_const_alloc_recursive(
todo.push(reloc);
}
}
} else if ecx.memory().dead_alloc_map.contains_key(&alloc_id) {
} else if ecx.memory.dead_alloc_map.contains_key(&alloc_id) {
// dangling pointer
throw_unsup!(ValidationFailure("encountered dangling pointer in final constant".into()))
}
Expand Down
4 changes: 2 additions & 2 deletions src/librustc_mir/interpret/terminator.rs
Original file line number Diff line number Diff line change
Expand Up @@ -140,12 +140,12 @@ impl<'mir, 'tcx, M: Machine<'mir, 'tcx>> InterpCx<'mir, 'tcx, M> {
.read_immediate(self.eval_operand(len, None)?)
.expect("can't eval len")
.to_scalar()?
.to_bits(self.memory().pointer_size())? as u64;
.to_bits(self.memory.pointer_size())? as u64;
let index = self
.read_immediate(self.eval_operand(index, None)?)
.expect("can't eval index")
.to_scalar()?
.to_bits(self.memory().pointer_size())? as u64;
.to_bits(self.memory.pointer_size())? as u64;
err_panic!(BoundsCheck { len, index })
}
Overflow(op) => err_panic!(Overflow(*op)),
Expand Down

0 comments on commit 715ffab

Please sign in to comment.