Compare commits
1 Commits
trunk
...
renovate/c
Author | SHA1 | Date | |
---|---|---|---|
|
b0b26dab33 |
@ -1,5 +1,4 @@
|
|||||||
[workspace]
|
[workspace]
|
||||||
resolver = "2"
|
|
||||||
members = [
|
members = [
|
||||||
"codegen/luajit",
|
"codegen/luajit",
|
||||||
"codegen/luau",
|
"codegen/luau",
|
||||||
|
@ -4,7 +4,7 @@ version = "0.12.0"
|
|||||||
edition = "2021"
|
edition = "2021"
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
wasmparser = "0.206.0"
|
wasmparser = "0.107.0"
|
||||||
|
|
||||||
[dependencies.wasm-ast]
|
[dependencies.wasm-ast]
|
||||||
path = "../../wasm-ast"
|
path = "../../wasm-ast"
|
||||||
|
@ -41,16 +41,14 @@ fn reader_to_code(reader: OperatorsReader) -> Vec<Operator> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn write_named_array(name: &str, len: usize, w: &mut dyn Write) -> Result<()> {
|
fn write_named_array(name: &str, len: usize, w: &mut dyn Write) -> Result<()> {
|
||||||
let Some(len) = len.checked_sub(1) else {
|
let Some(len) = len.checked_sub(1) else { return Ok(()) };
|
||||||
return Ok(());
|
|
||||||
};
|
|
||||||
|
|
||||||
writeln!(w, "local {name} = table_new({len}, 1)")
|
writeln!(w, "local {name} = table_new({len}, 1)")
|
||||||
}
|
}
|
||||||
|
|
||||||
fn write_constant(init: &ConstExpr, type_info: &TypeInfo, w: &mut dyn Write) -> Result<()> {
|
fn write_constant(init: &ConstExpr, type_info: &TypeInfo, w: &mut dyn Write) -> Result<()> {
|
||||||
let code = reader_to_code(init.get_operators_reader());
|
let code = reader_to_code(init.get_operators_reader());
|
||||||
let func = Factory::from_type_info(type_info).create_anonymous(code.as_slice());
|
let func = Factory::from_type_info(type_info).create_anonymous(&code);
|
||||||
|
|
||||||
if let Some(Statement::SetTemporary(stat)) = func.code().code().last() {
|
if let Some(Statement::SetTemporary(stat)) = func.code().code().last() {
|
||||||
stat.value().write(&mut Manager::empty(), w)
|
stat.value().write(&mut Manager::empty(), w)
|
||||||
@ -153,11 +151,7 @@ fn write_global_list(wasm: &Module, type_info: &TypeInfo, w: &mut dyn Write) ->
|
|||||||
|
|
||||||
fn write_element_list(list: &[Element], type_info: &TypeInfo, w: &mut dyn Write) -> Result<()> {
|
fn write_element_list(list: &[Element], type_info: &TypeInfo, w: &mut dyn Write) -> Result<()> {
|
||||||
for element in list {
|
for element in list {
|
||||||
let ElementKind::Active {
|
let ElementKind::Active { table_index: index, offset_expr: init } = element.kind else {
|
||||||
table_index: index,
|
|
||||||
offset_expr: init,
|
|
||||||
} = element.kind
|
|
||||||
else {
|
|
||||||
unimplemented!("passive elements not supported")
|
unimplemented!("passive elements not supported")
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -179,7 +173,7 @@ fn write_element_list(list: &[Element], type_info: &TypeInfo, w: &mut dyn Write)
|
|||||||
write!(w, "FUNC_LIST[{index}],")?;
|
write!(w, "FUNC_LIST[{index}],")?;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ElementItems::Expressions(_, expressions) => {
|
ElementItems::Expressions(expressions) => {
|
||||||
for init in expressions {
|
for init in expressions {
|
||||||
let init = init.unwrap();
|
let init = init.unwrap();
|
||||||
write_constant(&init, type_info, w)?;
|
write_constant(&init, type_info, w)?;
|
||||||
|
@ -4,7 +4,7 @@ version = "0.12.0"
|
|||||||
edition = "2021"
|
edition = "2021"
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
wasmparser = "0.206.0"
|
wasmparser = "0.107.0"
|
||||||
|
|
||||||
[dependencies.wasm-ast]
|
[dependencies.wasm-ast]
|
||||||
path = "../../wasm-ast"
|
path = "../../wasm-ast"
|
||||||
|
@ -180,7 +180,7 @@ fn write_element_list(list: &[Element], type_info: &TypeInfo, w: &mut dyn Write)
|
|||||||
write!(w, "FUNC_LIST[{index}],")?;
|
write!(w, "FUNC_LIST[{index}],")?;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ElementItems::Expressions(_, expressions) => {
|
ElementItems::Expressions(expressions) => {
|
||||||
for init in expressions {
|
for init in expressions {
|
||||||
let init = init.unwrap();
|
let init = init.unwrap();
|
||||||
write_constant(&init, type_info, w)?;
|
write_constant(&init, type_info, w)?;
|
||||||
|
@ -8,15 +8,15 @@ publish = false
|
|||||||
cargo-fuzz = true
|
cargo-fuzz = true
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
libfuzzer-sys = "0.4.7"
|
libfuzzer-sys = "0.4.6"
|
||||||
wasm-smith = "0.206.0"
|
wasm-smith = "0.12.10"
|
||||||
wasm-ast = { path = "../wasm-ast" }
|
wasm-ast = { path = "../wasm-ast" }
|
||||||
codegen-luajit = { path = "../codegen/luajit" }
|
codegen-luajit = { path = "../codegen/luajit" }
|
||||||
codegen-luau = { path = "../codegen/luau" }
|
codegen-luau = { path = "../codegen/luau" }
|
||||||
|
|
||||||
[dev-dependencies]
|
[dev-dependencies]
|
||||||
test-generator = "0.3.1"
|
test-generator = "0.3.1"
|
||||||
wast = "206.0.0"
|
wast = "60.0.0"
|
||||||
|
|
||||||
[[bin]]
|
[[bin]]
|
||||||
name = "luajit_translate"
|
name = "luajit_translate"
|
||||||
|
@ -74,7 +74,7 @@ impl Target for LuaJIT {
|
|||||||
Self::write_call_of("assert_trap", data, w)?;
|
Self::write_call_of("assert_trap", data, w)?;
|
||||||
writeln!(w)
|
writeln!(w)
|
||||||
}
|
}
|
||||||
WastExecute::Get { module, global, .. } => {
|
WastExecute::Get { module, global } => {
|
||||||
let name = get_name_from_id(*module);
|
let name = get_name_from_id(*module);
|
||||||
|
|
||||||
write!(w, "assert_neq(")?;
|
write!(w, "assert_neq(")?;
|
||||||
@ -114,7 +114,7 @@ impl Target for LuaJIT {
|
|||||||
|
|
||||||
writeln!(w, "}})")
|
writeln!(w, "}})")
|
||||||
}
|
}
|
||||||
WastExecute::Get { module, global, .. } => {
|
WastExecute::Get { module, global } => {
|
||||||
let name = get_name_from_id(*module);
|
let name = get_name_from_id(*module);
|
||||||
|
|
||||||
write!(w, "assert_eq(")?;
|
write!(w, "assert_eq(")?;
|
||||||
|
@ -88,7 +88,7 @@ impl Target for Luau {
|
|||||||
Self::write_call_of("assert_trap", data, w)?;
|
Self::write_call_of("assert_trap", data, w)?;
|
||||||
writeln!(w)
|
writeln!(w)
|
||||||
}
|
}
|
||||||
WastExecute::Get { module, global, .. } => {
|
WastExecute::Get { module, global } => {
|
||||||
let name = get_name_from_id(*module);
|
let name = get_name_from_id(*module);
|
||||||
|
|
||||||
write!(w, "assert_neq(")?;
|
write!(w, "assert_neq(")?;
|
||||||
@ -128,7 +128,7 @@ impl Target for Luau {
|
|||||||
|
|
||||||
writeln!(w, "}})")
|
writeln!(w, "}})")
|
||||||
}
|
}
|
||||||
WastExecute::Get { module, global, .. } => {
|
WastExecute::Get { module, global } => {
|
||||||
let name = get_name_from_id(*module);
|
let name = get_name_from_id(*module);
|
||||||
|
|
||||||
write!(w, "assert_eq(")?;
|
write!(w, "assert_eq(")?;
|
||||||
|
@ -41,8 +41,8 @@ macro_rules! impl_write_number_nan {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
impl_write_number_nan!(write_f32, write_f32_nan, f32, wast::token::F32);
|
impl_write_number_nan!(write_f32, write_f32_nan, f32, wast::token::Float32);
|
||||||
impl_write_number_nan!(write_f64, write_f64_nan, f64, wast::token::F64);
|
impl_write_number_nan!(write_f64, write_f64_nan, f64, wast::token::Float64);
|
||||||
|
|
||||||
#[allow(clippy::missing_const_for_fn)]
|
#[allow(clippy::missing_const_for_fn)]
|
||||||
fn try_into_ast_module(data: QuoteWat) -> Option<WaModule> {
|
fn try_into_ast_module(data: QuoteWat) -> Option<WaModule> {
|
||||||
|
6
renovate.json
Normal file
6
renovate.json
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
|
||||||
|
"extends": [
|
||||||
|
"config:recommended"
|
||||||
|
]
|
||||||
|
}
|
@ -4,4 +4,4 @@ version = "0.12.0"
|
|||||||
edition = "2021"
|
edition = "2021"
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
wasmparser = "0.206.0"
|
wasmparser = "0.107.0"
|
||||||
|
@ -2,8 +2,7 @@ use std::collections::HashMap;
|
|||||||
|
|
||||||
use wasmparser::{
|
use wasmparser::{
|
||||||
BlockType, Data, Element, Export, ExternalKind, FunctionBody, Global, Import, LocalsReader,
|
BlockType, Data, Element, Export, ExternalKind, FunctionBody, Global, Import, LocalsReader,
|
||||||
MemoryType, Name, NameSectionReader, Parser, Payload, RecGroup as Type, Result, Table, TypeRef,
|
MemoryType, Name, NameSectionReader, Parser, Payload, Result, Table, Type, TypeRef, ValType,
|
||||||
ValType,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#[derive(PartialEq, Eq, Clone, Copy)]
|
#[derive(PartialEq, Eq, Clone, Copy)]
|
||||||
@ -256,11 +255,10 @@ impl<'a> TypeInfo<'a> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub(crate) fn by_type_index(&self, index: usize) -> (usize, usize) {
|
pub(crate) fn by_type_index(&self, index: usize) -> (usize, usize) {
|
||||||
// let Type::Func(ty) = &self.type_list[index] else {
|
let Type::Func(ty) = &self.type_list[index] else {
|
||||||
// unreachable!("type at func index must be a func type");
|
unreachable!("type at func index must be a func type");
|
||||||
// };
|
};
|
||||||
|
|
||||||
let ty = self.type_list[index].types().next().unwrap().unwrap_func();
|
|
||||||
(ty.params().len(), ty.results().len())
|
(ty.params().len(), ty.results().len())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user