use crate::backend::{ ret_locs, BlockCallingConvention, CodeGenSession, Context, Label, VirtualCallingConvention, }; #[cfg(debug_assertions)] use crate::backend::{Registers, ValueLocation}; use crate::{ error::Error, microwasm::*, module::{ModuleContext, SigType, Signature}, }; use cranelift_codegen::{binemit, ir}; use dynasmrt::DynasmApi; use itertools::Either::{self, Left, Right}; #[cfg(debug_assertions)] use more_asserts::assert_ge; use std::{collections::HashMap, fmt, hash::Hash, iter, mem}; use wasmparser::FunctionBody; #[derive(Debug)] struct Block { label: BrTarget