Skip to content

Commit cc04f88

Browse files
committed
fix, refactor and clean-up ValueStack::replace
1 parent 7ca3209 commit cc04f88

File tree

1 file changed

+13
-15
lines changed
  • crates/wasmi/src/engine/executor/handler

1 file changed

+13
-15
lines changed

crates/wasmi/src/engine/executor/handler/state.rs

Lines changed: 13 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -554,28 +554,26 @@ impl ValueStack {
554554
#[inline(always)]
555555
fn replace(
556556
&mut self,
557-
start: usize,
558-
len_slots: usize,
557+
callee_start: usize,
558+
callee_size: usize,
559559
callee_params: BoundedSlotSpan,
560560
) -> Result<Sp, TrapCode> {
561-
let params_len = callee_params.len();
562-
let params_offset = usize::from(u16::from(callee_params.span().head()));
563-
debug_assert!(usize::from(params_len) <= len_slots);
564-
if len_slots == 0 {
561+
let params_len = usize::from(callee_params.len());
562+
let params_start = usize::from(u16::from(callee_params.span().head()));
563+
let params_end = params_start.wrapping_add(params_len);
564+
if callee_size == 0 {
565565
return Ok(Sp::dangling());
566566
}
567-
let Some(end) = start.checked_add(len_slots) else {
567+
let Some(callee_end) = callee_start.checked_add(callee_size) else {
568568
return Err(TrapCode::StackOverflow);
569569
};
570-
self.grow_if_needed(end)?;
571-
let params_len = usize::from(params_len);
572-
let params_end = params_offset.wrapping_add(params_len);
573-
let Some(cells) = self.cells.get_mut(start..params_end) else {
574-
unsafe { unreachable_unchecked!() }
570+
self.grow_if_needed(callee_end)?;
571+
let Some(callee_cells) = self.cells.get_mut(callee_start..) else {
572+
unsafe { unreachable_unchecked!("ValueStack::replace: out of bounds callee cells") }
575573
};
576-
cells.copy_within(params_offset..params_end, 0);
577-
cells[params_len..].fill_with(UntypedVal::default);
578-
let sp = self.sp(start);
574+
callee_cells.copy_within(params_start..params_end, 0);
575+
callee_cells[params_len..callee_size].fill_with(UntypedVal::default);
576+
let sp = self.sp(callee_start);
579577
Ok(sp)
580578
}
581579
}

0 commit comments

Comments
 (0)