Add new test results
This commit is contained in:
34
README.md
34
README.md
@@ -165,10 +165,10 @@ Now obviously I'm not advocating for replacing FireFox's optimising compiler wit
|
|||||||
|
|
||||||
## Specification compliance
|
## Specification compliance
|
||||||
|
|
||||||
It's hard to judge, since each test in the spec testsuite covers a wide range of features (to check their interactions), but currently 59 out of 74 of the spec suite tests pass when run in Wasmtime with Lightbeam as a backend. Here's the full test output:
|
It's hard to judge, since each test in the spec testsuite covers a wide range of features (to check their interactions), but currently 62 out of 74 of the spec suite tests pass when run in Wasmtime with Lightbeam as a backend. Here's the full test output:
|
||||||
|
|
||||||
```
|
```
|
||||||
running 76 tests
|
running 74 tests
|
||||||
test spec_testsuite::binary ... ok
|
test spec_testsuite::binary ... ok
|
||||||
test spec_testsuite::align ... ok
|
test spec_testsuite::align ... ok
|
||||||
test spec_testsuite::block ... ok
|
test spec_testsuite::block ... ok
|
||||||
@@ -179,11 +179,11 @@ test spec_testsuite::address ... ok
|
|||||||
test spec_testsuite::comments ... ok
|
test spec_testsuite::comments ... ok
|
||||||
test spec_testsuite::const_ ... ok
|
test spec_testsuite::const_ ... ok
|
||||||
test spec_testsuite::call ... ok
|
test spec_testsuite::call ... ok
|
||||||
test spec_testsuite::conversions ... FAILED
|
|
||||||
test spec_testsuite::custom ... ok
|
test spec_testsuite::custom ... ok
|
||||||
test spec_testsuite::custom_section ... ok
|
test spec_testsuite::custom_section ... ok
|
||||||
test spec_testsuite::br_table ... FAILED
|
test spec_testsuite::conversions ... FAILED
|
||||||
test spec_testsuite::data ... ok
|
test spec_testsuite::data ... ok
|
||||||
|
test spec_testsuite::br_table ... FAILED
|
||||||
test spec_testsuite::exports ... ok
|
test spec_testsuite::exports ... ok
|
||||||
test spec_testsuite::elem ... ok
|
test spec_testsuite::elem ... ok
|
||||||
test spec_testsuite::endianness ... ok
|
test spec_testsuite::endianness ... ok
|
||||||
@@ -191,15 +191,15 @@ test spec_testsuite::call_indirect ... ok
|
|||||||
test spec_testsuite::f32_bitwise ... ok
|
test spec_testsuite::f32_bitwise ... ok
|
||||||
test spec_testsuite::f64_bitwise ... ok
|
test spec_testsuite::f64_bitwise ... ok
|
||||||
test spec_testsuite::f32_cmp ... ok
|
test spec_testsuite::f32_cmp ... ok
|
||||||
test spec_testsuite::f32 ... ok
|
|
||||||
test spec_testsuite::fac ... ok
|
test spec_testsuite::fac ... ok
|
||||||
|
test spec_testsuite::f32 ... ok
|
||||||
test spec_testsuite::f64 ... ok
|
test spec_testsuite::f64 ... ok
|
||||||
test spec_testsuite::float_memory ... ok
|
|
||||||
test spec_testsuite::f64_cmp ... ok
|
test spec_testsuite::f64_cmp ... ok
|
||||||
|
test spec_testsuite::float_memory ... ok
|
||||||
test spec_testsuite::forward ... ok
|
test spec_testsuite::forward ... ok
|
||||||
test spec_testsuite::float_misc ... ok
|
|
||||||
test spec_testsuite::func_ptrs ... FAILED
|
|
||||||
test spec_testsuite::float_literals ... ok
|
test spec_testsuite::float_literals ... ok
|
||||||
|
test spec_testsuite::func_ptrs ... FAILED
|
||||||
|
test spec_testsuite::float_misc ... ok
|
||||||
test spec_testsuite::get_local ... FAILED
|
test spec_testsuite::get_local ... FAILED
|
||||||
test spec_testsuite::float_exprs ... FAILED
|
test spec_testsuite::float_exprs ... FAILED
|
||||||
test spec_testsuite::func ... ok
|
test spec_testsuite::func ... ok
|
||||||
@@ -208,29 +208,29 @@ test spec_testsuite::imports ... FAILED
|
|||||||
test spec_testsuite::inline_module ... ok
|
test spec_testsuite::inline_module ... ok
|
||||||
test spec_testsuite::i32 ... ok
|
test spec_testsuite::i32 ... ok
|
||||||
test spec_testsuite::i64 ... ok
|
test spec_testsuite::i64 ... ok
|
||||||
test spec_testsuite::if_ ... ok
|
|
||||||
test spec_testsuite::labels ... ok
|
test spec_testsuite::labels ... ok
|
||||||
|
test spec_testsuite::if_ ... ok
|
||||||
test spec_testsuite::int_literals ... ok
|
test spec_testsuite::int_literals ... ok
|
||||||
test spec_testsuite::linking ... FAILED
|
test spec_testsuite::linking ... FAILED
|
||||||
test spec_testsuite::int_exprs ... ok
|
|
||||||
test spec_testsuite::loop_ ... ok
|
test spec_testsuite::loop_ ... ok
|
||||||
|
test spec_testsuite::int_exprs ... ok
|
||||||
test spec_testsuite::memory_redundancy ... ok
|
test spec_testsuite::memory_redundancy ... ok
|
||||||
test spec_testsuite::memory_grow ... FAILED
|
|
||||||
test spec_testsuite::memory_trap ... FAILED
|
test spec_testsuite::memory_trap ... FAILED
|
||||||
|
test spec_testsuite::memory_grow ... FAILED
|
||||||
|
test spec_testsuite::left_to_right ... ok
|
||||||
test spec_testsuite::memory ... ok
|
test spec_testsuite::memory ... ok
|
||||||
test spec_testsuite::resizing ... ok
|
test spec_testsuite::resizing ... ok
|
||||||
test spec_testsuite::left_to_right ... ok
|
|
||||||
test spec_testsuite::return_minimal ... ok
|
test spec_testsuite::return_minimal ... ok
|
||||||
test spec_testsuite::nop ... ok
|
test spec_testsuite::nop ... ok
|
||||||
test spec_testsuite::return_ ... ok
|
|
||||||
test spec_testsuite::select ... ok
|
test spec_testsuite::select ... ok
|
||||||
|
test spec_testsuite::return_ ... ok
|
||||||
test spec_testsuite::stack ... ok
|
test spec_testsuite::stack ... ok
|
||||||
test spec_testsuite::start ... ok
|
test spec_testsuite::start ... ok
|
||||||
test spec_testsuite::set_local ... FAILED
|
|
||||||
test spec_testsuite::store_retval ... ok
|
test spec_testsuite::store_retval ... ok
|
||||||
test spec_testsuite::skip_stack_guard_page ... FAILED
|
test spec_testsuite::skip_stack_guard_page ... FAILED
|
||||||
test spec_testsuite::token ... ok
|
|
||||||
test spec_testsuite::switch ... ok
|
test spec_testsuite::switch ... ok
|
||||||
|
test spec_testsuite::set_local ... FAILED
|
||||||
|
test spec_testsuite::token ... ok
|
||||||
test spec_testsuite::type_ ... ok
|
test spec_testsuite::type_ ... ok
|
||||||
test spec_testsuite::typecheck ... ok
|
test spec_testsuite::typecheck ... ok
|
||||||
test spec_testsuite::traps ... FAILED
|
test spec_testsuite::traps ... FAILED
|
||||||
@@ -242,9 +242,9 @@ test spec_testsuite::utf8_import_module ... ok
|
|||||||
test spec_testsuite::utf8_invalid_encoding ... ok
|
test spec_testsuite::utf8_invalid_encoding ... ok
|
||||||
test spec_testsuite::tee_local ... FAILED
|
test spec_testsuite::tee_local ... FAILED
|
||||||
test spec_testsuite::unreachable ... ok
|
test spec_testsuite::unreachable ... ok
|
||||||
test spec_testsuite::names ... FAILED
|
test spec_testsuite::names ... ok
|
||||||
|
|
||||||
test result: FAILED. 59 passed; 15 failed; 0 ignored; 0 measured; 0 filtered out
|
test result: FAILED. 62 passed; 12 failed; 0 ignored; 0 measured; 0 filtered out
|
||||||
```
|
```
|
||||||
|
|
||||||
## Getting involved
|
## Getting involved
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ where
|
|||||||
M: ModuleContext,
|
M: ModuleContext,
|
||||||
for<'any> &'any M::Signature: Into<OpSig>,
|
for<'any> &'any M::Signature: Into<OpSig>,
|
||||||
{
|
{
|
||||||
let ty = session.module_context.func_type(func_idx);
|
let ty = session.module_context.defined_func_type(func_idx);
|
||||||
|
|
||||||
if DISASSEMBLE {
|
if DISASSEMBLE {
|
||||||
let microwasm_conv = MicrowasmConv::new(
|
let microwasm_conv = MicrowasmConv::new(
|
||||||
@@ -320,6 +320,9 @@ where
|
|||||||
) {
|
) {
|
||||||
(Some(Left(ref cc)), ref mut other @ None)
|
(Some(Left(ref cc)), ref mut other @ None)
|
||||||
| (ref mut other @ None, Some(Left(ref cc))) => {
|
| (ref mut other @ None, Some(Left(ref cc))) => {
|
||||||
|
// TODO: This doesn't handle the difference in parameters - we need a unified
|
||||||
|
// CC type where each element can be either a `CCLoc` or a `ValueLocation`
|
||||||
|
assert_eq!(then.to_drop, else_.to_drop);
|
||||||
**other = Some(Left(cc.clone()));
|
**other = Some(Left(cc.clone()));
|
||||||
|
|
||||||
ctx.pass_block_args(cc);
|
ctx.pass_block_args(cc);
|
||||||
@@ -327,36 +330,32 @@ where
|
|||||||
(ref mut then_cc @ None, ref mut else_cc @ None) => {
|
(ref mut then_cc @ None, ref mut else_cc @ None) => {
|
||||||
let max_params = then_block.params.max(else_block.params);
|
let max_params = then_block.params.max(else_block.params);
|
||||||
let cc = if then_block_should_serialize_args {
|
let cc = if then_block_should_serialize_args {
|
||||||
Some(Left(ctx.serialize_args(max_params)))
|
Left(ctx.serialize_args(max_params))
|
||||||
} else if else_block_should_serialize_args {
|
} else if else_block_should_serialize_args {
|
||||||
Some(Left(ctx.serialize_args(max_params)))
|
Left(ctx.serialize_args(max_params))
|
||||||
} else {
|
} else {
|
||||||
Some(Right(ctx.virtual_calling_convention()))
|
Right(ctx.virtual_calling_convention())
|
||||||
};
|
};
|
||||||
|
|
||||||
**then_cc = {
|
**then_cc = {
|
||||||
let mut cc = cc.clone();
|
let mut cc = cc.clone();
|
||||||
if let (Some(cc), Some(to_drop)) =
|
if let Some(to_drop) = then.to_drop.clone() {
|
||||||
(cc.as_mut(), then.to_drop.clone())
|
match &mut cc {
|
||||||
{
|
|
||||||
match cc {
|
|
||||||
Left(cc) => drop_elements(&mut cc.arguments, to_drop),
|
Left(cc) => drop_elements(&mut cc.arguments, to_drop),
|
||||||
Right(cc) => drop_elements(&mut cc.stack, to_drop),
|
Right(cc) => drop_elements(&mut cc.stack, to_drop),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
cc
|
Some(cc)
|
||||||
};
|
};
|
||||||
**else_cc = {
|
**else_cc = {
|
||||||
let mut cc = cc;
|
let mut cc = cc;
|
||||||
if let (Some(cc), Some(to_drop)) =
|
if let Some(to_drop) = else_.to_drop.clone() {
|
||||||
(cc.as_mut(), else_.to_drop.clone())
|
match &mut cc {
|
||||||
{
|
|
||||||
match cc {
|
|
||||||
Left(cc) => drop_elements(&mut cc.arguments, to_drop),
|
Left(cc) => drop_elements(&mut cc.arguments, to_drop),
|
||||||
Right(cc) => drop_elements(&mut cc.stack, to_drop),
|
Right(cc) => drop_elements(&mut cc.stack, to_drop),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
cc
|
Some(cc)
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
_ => unimplemented!(
|
_ => unimplemented!(
|
||||||
|
|||||||
@@ -454,7 +454,6 @@ pub trait ModuleContext {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn func_type(&self, func_idx: u32) -> &Self::Signature {
|
fn func_type(&self, func_idx: u32) -> &Self::Signature {
|
||||||
// TODO: This assumes that there are no imported functions.
|
|
||||||
self.signature(self.func_type_index(func_idx))
|
self.signature(self.func_type_index(func_idx))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user