aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--bytecode/src/heap.rs10
1 files changed, 5 insertions, 5 deletions
diff --git a/bytecode/src/heap.rs b/bytecode/src/heap.rs
index 78a406f..c70d897 100644
--- a/bytecode/src/heap.rs
+++ b/bytecode/src/heap.rs
@@ -1,6 +1,5 @@
use crate::data::{Pointer, Value};
use std::collections::{HashMap, VecDeque};
-use std::iter::Iterator;
fn rewrite_pointers(
stack: &mut [Value],
@@ -111,7 +110,7 @@ impl Heap {
continue;
}
let sz = self.alloc_size(p)?;
- for j in (0..sz).step_by(8) {
+ for j in 0..sz / 8 {
let val = self.peek(p, j)?;
let vp = if val.is_pointer() {
val.to_pointer().unwrap()
@@ -186,13 +185,14 @@ impl Heap {
}
pub fn poke(&mut self, v: Value, p: Pointer, offset: usize) -> Result<(), String> {
+ let offset_bytes = offset * 8;
let obj_sz = self.alloc_size(p)?;
- if offset >= obj_sz {
+ if offset_bytes >= obj_sz {
return Err(format!(
- "invalid offset {offset} in an object of size {obj_sz}"
+ "invalid offset {offset_bytes} in an object of size {obj_sz}"
));
}
- let (u, _) = open_ptr(p.offset(offset));
+ let (u, _) = open_ptr(p.offset(offset_bytes));
let Value(x) = v;
if u >= self.heap.len() {
return Err(format!("invalid pointer {:x}", p));