feat: add experimental tailcall vm backend
This commit is contained in:
@@ -3,7 +3,7 @@ use std::fmt::Write;
|
||||
use colored::Colorize;
|
||||
use num_enum::TryFromPrimitive;
|
||||
|
||||
use crate::{AttrKeyType, InstructionPtr, OperandType, Op};
|
||||
use crate::{AttrKeyType, InstructionPtr, Op, OperandType};
|
||||
|
||||
pub trait DisassemblerContext {
|
||||
fn resolve_string(&self, id: u32) -> &str;
|
||||
@@ -287,12 +287,13 @@ impl<'a, Ctx: DisassemblerContext> Disassembler<'a, Ctx> {
|
||||
let mut args = format!("size={}", count);
|
||||
for _ in 0..count {
|
||||
let key_tag = self.read_u8();
|
||||
let key_ty = AttrKeyType::try_from_primitive(key_tag)
|
||||
.expect("invalid attr key type");
|
||||
let key_ty =
|
||||
AttrKeyType::try_from_primitive(key_tag).expect("invalid attr key type");
|
||||
match key_ty {
|
||||
AttrKeyType::Static => {
|
||||
let key_id = self.read_u32();
|
||||
let _ = write!(args, " [{}={}", self.ctx.resolve_string(key_id), key_id);
|
||||
let _ =
|
||||
write!(args, " [{}={}", self.ctx.resolve_string(key_id), key_id);
|
||||
}
|
||||
AttrKeyType::Dynamic => {
|
||||
let _ = write!(args, " [dyn");
|
||||
|
||||
Reference in New Issue
Block a user