diff --git a/crates/interpreter/src/side_table.rs b/crates/interpreter/src/side_table.rs index aed323e8..dc65d365 100644 --- a/crates/interpreter/src/side_table.rs +++ b/crates/interpreter/src/side_table.rs @@ -15,7 +15,6 @@ use crate::bit_field::*; use crate::error::*; -#[allow(dead_code)] // TODO(dev/fast-interp) #[derive(Default, Copy, Clone, Debug)] #[repr(transparent)] pub struct SideTableEntry(u64); @@ -31,7 +30,6 @@ pub struct SideTableEntryView { pub pop_cnt: u32, } -#[allow(dead_code)] // TODO(dev/fast-interp) impl SideTableEntry { const DELTA_IP_MASK: u64 = 0xffff; const DELTA_STP_MASK: u64 = 0xffff << 16; diff --git a/crates/interpreter/src/valid.rs b/crates/interpreter/src/valid.rs index 0df81d0b..4b7897f3 100644 --- a/crates/interpreter/src/valid.rs +++ b/crates/interpreter/src/valid.rs @@ -432,7 +432,7 @@ impl SideTable { let delta_stp = Self::delta(source, target, |x| x.side_table as isize)?; let val_cnt = u32::try_from(target.result).map_err(|_| { #[cfg(feature = "debug")] - eprintln!("side-table val_cnt overflow {0}", source.result); + eprintln!("side-table val_cnt overflow {0}", target.result); unsupported(if_debug!(Unsupported::SideTable)) })?; let pop_cnt = Self::pop_cnt(source, target)?; @@ -487,7 +487,7 @@ struct SideTableBranch<'m> { parser: &'m [u8], side_table: usize, stack: usize, - result: usize, // unused (zero) for target branches + result: usize, // unused (zero) for source branches } #[derive(Debug, Default)] @@ -600,7 +600,8 @@ impl<'a, 'm> Expr<'a, 'm> { Else => { match core::mem::replace(&mut self.label().kind, LabelKind::Block) { LabelKind::If(source) => { - let mut target = self.branch_target(source.result); + let result = self.label().type_.results.len(); + let mut target = self.branch_target(result); target.side_table += 1; self.side_table.stitch(source, target)? }