Merge remote-tracking branch 'yurydelendik-lightbeam/cranelift-32'
This commit is contained in:
@@ -13,7 +13,7 @@ edition = "2018"
|
|||||||
smallvec = "0.6"
|
smallvec = "0.6"
|
||||||
dynasm = "0.3"
|
dynasm = "0.3"
|
||||||
dynasmrt = "0.3"
|
dynasmrt = "0.3"
|
||||||
wasmparser = "0.29"
|
wasmparser = "0.32"
|
||||||
memoffset = "0.2"
|
memoffset = "0.2"
|
||||||
itertools = "0.8"
|
itertools = "0.8"
|
||||||
capstone = "0.5.0"
|
capstone = "0.5.0"
|
||||||
|
|||||||
@@ -290,6 +290,13 @@ impl SignlessType {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn create_returns_from_wasm_type(ty: wasmparser::TypeOrFuncType) -> Vec<SignlessType> {
|
||||||
|
match ty {
|
||||||
|
wasmparser::TypeOrFuncType::Type(ty) => Vec::from_iter(Type::from_wasm(ty)),
|
||||||
|
wasmparser::TypeOrFuncType::FuncType(_) => panic!("unsupported func type"),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#[derive(Debug, Clone)]
|
#[derive(Debug, Clone)]
|
||||||
pub struct BrTable<L> {
|
pub struct BrTable<L> {
|
||||||
pub targets: Vec<BrTargetDrop<L>>,
|
pub targets: Vec<BrTargetDrop<L>>,
|
||||||
@@ -1407,9 +1414,9 @@ where
|
|||||||
self.stack.clone()
|
self.stack.clone()
|
||||||
}
|
}
|
||||||
|
|
||||||
fn block_params_with_wasm_type(&self, ty: wasmparser::Type) -> Vec<SignlessType> {
|
fn block_params_with_wasm_type(&self, ty: wasmparser::TypeOrFuncType) -> Vec<SignlessType> {
|
||||||
let mut out = self.block_params();
|
let mut out = self.block_params();
|
||||||
out.extend(Type::from_wasm(ty));
|
out.extend(create_returns_from_wasm_type(ty));
|
||||||
out
|
out
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1538,7 +1545,7 @@ where
|
|||||||
self.control_frames.push(ControlFrame {
|
self.control_frames.push(ControlFrame {
|
||||||
id,
|
id,
|
||||||
arguments: self.stack.len() as u32,
|
arguments: self.stack.len() as u32,
|
||||||
returns: Vec::from_iter(Type::from_wasm(ty)),
|
returns: create_returns_from_wasm_type(ty),
|
||||||
kind: ControlFrameKind::Block {
|
kind: ControlFrameKind::Block {
|
||||||
needs_end_label: false,
|
needs_end_label: false,
|
||||||
},
|
},
|
||||||
@@ -1553,7 +1560,7 @@ where
|
|||||||
self.control_frames.push(ControlFrame {
|
self.control_frames.push(ControlFrame {
|
||||||
id,
|
id,
|
||||||
arguments: self.stack.len() as u32,
|
arguments: self.stack.len() as u32,
|
||||||
returns: Vec::from_iter(Type::from_wasm(ty)),
|
returns: create_returns_from_wasm_type(ty),
|
||||||
kind: ControlFrameKind::Loop,
|
kind: ControlFrameKind::Loop,
|
||||||
});
|
});
|
||||||
let label = (id, NameTag::Header);
|
let label = (id, NameTag::Header);
|
||||||
@@ -1571,7 +1578,7 @@ where
|
|||||||
self.control_frames.push(ControlFrame {
|
self.control_frames.push(ControlFrame {
|
||||||
id,
|
id,
|
||||||
arguments: self.stack.len() as u32,
|
arguments: self.stack.len() as u32,
|
||||||
returns: Vec::from_iter(Type::from_wasm(ty)),
|
returns: create_returns_from_wasm_type(ty),
|
||||||
kind: ControlFrameKind::If { has_else: false },
|
kind: ControlFrameKind::If { has_else: false },
|
||||||
});
|
});
|
||||||
let (then, else_, end) = (
|
let (then, else_, end) = (
|
||||||
|
|||||||
Reference in New Issue
Block a user