fix: 为未实现指令返回显式错误
This commit is contained in:
@@ -1854,9 +1854,6 @@ impl Vm {
|
|||||||
}
|
}
|
||||||
|
|
||||||
_ => {
|
_ => {
|
||||||
if !op.is_implemented() {
|
|
||||||
return Ok(JsValue::undefined());
|
|
||||||
}
|
|
||||||
return Err(format!("opcode {op} not yet implemented"));
|
return Err(format!("opcode {op} not yet implemented"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -2015,4 +2012,21 @@ mod tests {
|
|||||||
assert_eq!(vm.bytecode[1], ptr as u32);
|
assert_eq!(vm.bytecode[1], ptr as u32);
|
||||||
assert_eq!(vm.bytecode[2], (ptr as u64 >> 32) as u32);
|
assert_eq!(vm.bytecode[2], (ptr as u64 >> 32) as u32);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn unimplemented_profile_opcode_fails_explicitly() {
|
||||||
|
let module = CompiledModule {
|
||||||
|
bytecode: vec![
|
||||||
|
opcode::encode(opcode::OpCode::PROFILE_TYPE, 0, 0, 0),
|
||||||
|
opcode::encode(opcode::OpCode::HALT, 0, 0, 0),
|
||||||
|
],
|
||||||
|
n_registers: 1,
|
||||||
|
..CompiledModule::new()
|
||||||
|
};
|
||||||
|
let mut vm = Vm::new();
|
||||||
|
let err = vm
|
||||||
|
.run(&module)
|
||||||
|
.expect_err("unimplemented opcode should fail explicitly");
|
||||||
|
assert_eq!(err, "opcode PROFILE_TYPE not yet implemented");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user