1017: Add a 'clear' method to map. r=nlewycky a=nlewycky
# Description
Motivated by work on the `nlewycky/inkwell-lifetimes` branch. No callers yet on master, but we use it on the branch and I'd like to merge in pieces.
Co-authored-by: Nick Lewycky <nick@wasmer.io>
1016: [fix 962] Activate pre_validation when llvm backend selected r=nlewycky a=pventuzelo
# Description
After analysis of issue https://github.com/wasmerio/wasmer/issues/962 by me and @nlewycky, it seems to be better to validate the wasm module before calling the llvm compiler.
This change will imply potential overhead in term of execution speed using llvm backend.
I will also suggest to set pre_validation to true for Singlepass by default:
5c1c786e35/lib/runtime-core/src/codegen.rs (L263-L269)
Additional improvement proposal for wasmer API & cli command options:
* add an API `compile_without_validation`.
* add a flag option in wasmer binary to deactivate `pre_validation` for all backend.
# Review
- [x] Add a short description of the the change to the CHANGELOG.md file
Co-authored-by: Patrick Ventuzelo <ventuzelo.patrick@gmail.com>
1002: Update the LLVM pass list. r=nlewycky a=nlewycky
# Description
Adds optimizations of loops, and inlinling and some simple interprocedural optimization.
Measured on the libsodium benchmarks, the new pass pipeline is a 2.35% geomean improvement. No major performance regressions known.
Co-authored-by: Nick Lewycky <nick@wasmer.io>
1009: Fix LLVM crash on `return` with a float on the stack and a crash with gas metering. r=nlewycky a=nlewycky
# Description
This PR fixes some matters of testing. The return+float bug is caught by the LLVM verifier, which was accidentally unconditionally disabled even when running "make test check". Add a new cargo feature named "test" which is enabled by all the test crates. When the "test" feature is passed to the llvm-backend, run the LLVM verifier.
Add a new crate `llvm-backend-test` which has one test so far, to ensure that this bug with the return+float does not crash LLVM. Include this new crate in runs of `make llvm`.
Fix LLVM crash on `return` when there is a float with pending NaN canonicalization on the stack.
Now that we run the verifier in testing, we discover another bug where `internal_field()` incorrectly labels a GEP with a TBAA label instead of the intended load. Fix this by labeling the correct instruction. No new test is introduced since this is already caught with `make bench-llvm`.
# Review
- [ ] Add a short description of the the change to the CHANGELOG.md file
Co-authored-by: Nick Lewycky <nick@wasmer.io>
713: Add AArch64 support for singlepass. r=syrusakbary a=losfair
This PR includes:
- Support for AArch64 (ARM64) in Singlepass backend. Implemented with a combination of x86_64 instruction translation and native code generation.
- State tracing and backtraces on AArch64/Singlepass. (Tiering is not implemented for this pair because there's no other backend supporting AArch64 yet)
- Debugging tools: `BlockTrace` middleware, and support for reading states of previous WebAssembly stack frames from middlewares.
Co-authored-by: losfair <zhy20000919@hotmail.com>
997: Compiler tests r=MarkMcCaskey a=syrusakbary
# Description
This PR simplifies the testing part, making `wasmer_runtime_core` the one responsible for picking the default backend.
This makes tests much simpler, and reliable when trying to run in different backends (this PR solves an issue when trying to run wasitests on ARM machines).
<!--
Provide details regarding the change including motivation,
links to related issues, and the context of the PR.
-->
# Review
- [x] Add a short description of the the change to the CHANGELOG.md file
Co-authored-by: Syrus <me@syrusakbary.com>
Co-authored-by: Mark McCaskey <mark@wasmer.io>
Co-authored-by: Mark McCaskey <5770194+markmccaskey@users.noreply.github.com>