More info of the failure: https://circleci.com/gh/wasmerio/wasmer/11663
```
cargo test --manifest-path lib/middleware-common/Cargo.toml --release --features llvm
Compiling wasmer-llvm-backend v0.6.0 (/home/circleci/project/lib/llvm-backend)
Compiling inkwell v0.1.0 (https://github.com/wasmerio/inkwell?branch=llvm8-0#4c5359e5)
Compiling wasmer-middleware-common v0.6.0 (/home/circleci/project/lib/middleware-common)
Finished release [optimized] target(s) in 14.54s
Running target/release/deps/wasmer_middleware_common-3c263452f3b7d07e
running 2 tests
test metering::tests::test_points_reduced_after_call ... test metering::tests::test_points_reduced_after_call has been running for over 60 seconds
test metering::tests::test_traps_after_costly_call ... test metering::tests::test_traps_after_costly_call has been running for over 60 seconds
Makefile:59: recipe for target 'middleware-llvm' failed
make: *** [middleware-llvm] Terminated
Too long with no output (exceeded 10m0s)
```
623: Add support for (register) command in spec tests and enable importing mutable globals. r=nlewycky a=nlewycky
Enable the part of the simd spec tests that now pass.
Co-authored-by: Nick Lewycky <nick@wasmer.io>
616: runtime-c-api: create the import object separately from instance instantiation r=bjfish a=YaronWittenstein
Creating an `import object` separately from the `wasmer` instance, let's us build the import object incrementally and support the use-case of having import functions (a.k.a `vmcalls`) implemented in 2 programming languages (Rust and Golang for example) and consumed by the same `wasmer` instance.
Co-authored-by: Yaron Wittenstein <yaron.wittenstein@gmail.com>
Co-authored-by: Brandon Fish <bjfish@users.noreply.github.com>
Before C++17, throw() was equivalent to wrapping the function in a try {} catch
{ std::unexpected(); }. In C++17 throw() was made equivalent to noexcept and
in C++20 throw() was removed.
618: Implement InternalEvent::Breakpoint in the llvm backend. r=nlewycky a=nlewycky
Enable now-working metering unit tests when run with the llvm backend.
Co-authored-by: Nick Lewycky <nick@wasmer.io>
Co-authored-by: nlewycky <nick@wasmer.io>
The feed_event() function is called for every wasm binary instruction.
Let's optimize it by storing FunctionEnvironment object in
CraneliftFunctionCodeGenerator, rather than constructing it for every
feed_event() invocation.
This change reduces the time to run "ngix compile" benchmark by 68%:
Before:
nginx compile time: [1.4152 s 1.4186 s 1.4222 s]
Found 1 outliers among 10 measurements (10.00%)
1 (10.00%) high mild
After:
nginx compile time: [447.76 ms 448.32 ms 448.80 ms]
change: [-68.542% -68.440% -68.352%] (p = 0.00 < 0.05)
Performance has improved.
I assume some of the clone() calls are very expensive (Vec::clone(),
likely). I did see libc malloc()/free() high up in "perf top" profiles,
which are eliminted by this change.
I also looked into eliminating FunctionBuilder construction from
feed_event(). That turns out to be painful on lifetime rules because it
borrows bunch of other objects, so I am leaving it for someone who knows
the code better than I do.
609: Update dependencies r=syrusakbary a=syrusakbary
This PR does:
* Update dependencies (to explicitly use only one version of a package, in all the places we use it)
* Remove explicit dependency on `hashbrown` since it's already adopted as the default algorithm for `HashMap`
* Small fixes on code to use latest versions
Co-authored-by: Syrus <me@syrusakbary.com>