better force eval ergonomic

This commit is contained in:
2026-04-21 22:05:49 +08:00
parent b31c2a4906
commit e469d1b819
7 changed files with 303 additions and 123 deletions
+3 -4
View File
@@ -1,3 +1,4 @@
use crate::value::*;
use crate::{BytecodeReader, Step};
impl<'gc> crate::Vm<'gc> {
@@ -8,8 +9,7 @@ impl<'gc> crate::Vm<'gc> {
mc: &gc_arena::Mutation<'gc>,
) -> Step {
let offset = reader.read_i32();
self.try_force(0, reader, mc)?;
let cond = self.pop();
let cond = self.try_force::<StrictValue>(reader, mc)?;
if cond.as_inline::<bool>() == Some(false) {
reader.set_pc(((reader.pc() as isize) + (offset as isize)) as usize);
}
@@ -23,8 +23,7 @@ impl<'gc> crate::Vm<'gc> {
mc: &gc_arena::Mutation<'gc>,
) -> Step {
let offset = reader.read_i32();
self.try_force(0, reader, mc)?;
let cond = self.pop();
let cond = self.try_force::<StrictValue>(reader, mc)?;
if cond.as_inline::<bool>() == Some(true) {
reader.set_pc(((reader.pc() as isize) + (offset as isize)) as usize);
}