InterpCx: make memory field public
This commit is contained in:
parent
d4f7f974b8
commit
715ffab116
3 changed files with 6 additions and 17 deletions
|
|
@ -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>>,
|
||||
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
@ -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.
|
||||
|
|
@ -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()))
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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)),
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue