use crate::value::*; use crate::{BytecodeReader, Step}; impl<'gc> crate::Vm<'gc> { #[inline(always)] pub(crate) fn op_jump_if_false( &mut self, reader: &mut BytecodeReader<'_>, mc: &gc_arena::Mutation<'gc>, ) -> Step { let offset = reader.read_i32(); let cond = self.try_force::(reader, mc)?; if cond.as_inline::() == Some(false) { reader.set_pc(((reader.pc() as isize) + (offset as isize)) as usize); } Step::Continue(()) } #[inline(always)] pub(crate) fn op_jump_if_true( &mut self, reader: &mut BytecodeReader<'_>, mc: &gc_arena::Mutation<'gc>, ) -> Step { let offset = reader.read_i32(); let cond = self.try_force::(reader, mc)?; if cond.as_inline::() == Some(true) { reader.set_pc(((reader.pc() as isize) + (offset as isize)) as usize); } Step::Continue(()) } #[inline(always)] pub(crate) fn op_jump(&mut self, reader: &mut BytecodeReader<'_>) -> Step { let offset = reader.read_i32(); reader.set_pc(((reader.pc() as isize) + (offset as isize)) as usize); Step::Continue(()) } #[inline(always)] pub(crate) fn op_assert(&mut self, reader: &mut BytecodeReader<'_>) -> Step { let _raw_idx = reader.read_u32(); let _span_id = reader.read_u32(); todo!("implement Assert (force TOS)"); } }