Commit Graph

258 Commits

Author SHA1 Message Date
b2c4501357 Add support for backend flags. Backend flags are opaque to src/bin/wasmer.rs.
Use them to implement three features in the LLVM backend, getting a valid ELF object file, the post-optimization LLVM IR and the pre-optimization LLVM IR.

Presently they are also global to the backend which is not ideal.
2019-08-08 17:05:31 -07:00
02f1d73f88 Reformat. 2019-08-08 13:55:44 -07:00
c4d4a6888c Fix a bug where we would fail to find llvm-config-M or llvm-config-M-N when llvm-sys would.
Update to match features in newer llvm-sys.
2019-08-08 13:46:40 -07:00
c1619026d5 Swap code lazily when tiering up from singlepass to LLVM.
Does not handle long-running functions, but should work at least.
2019-08-09 04:26:17 +08:00
0d604b754b Commented out code for saving semantics of internal values. 2019-08-08 21:54:39 +08:00
b113f5a24b longjmp turns out to work on Windows. Remove custom unwinding code. 2019-08-08 03:19:19 +08:00
4b1d337ebe Custom setjmp/longjmp to avoid SEH. (will it work?) 2019-08-07 00:38:42 +08:00
b50fd31adb Use setjmp/longjmp to handle LLVM exceptions. 2019-08-07 00:06:35 +08:00
a036a306d5 Bump regex from 1.2.0 to 1.2.1
Bumps [regex](https://github.com/rust-lang/regex) from 1.2.0 to 1.2.1.
- [Release notes](https://github.com/rust-lang/regex/releases)
- [Changelog](https://github.com/rust-lang/regex/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/regex/compare/1.2.0...1.2.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-08-05 08:36:27 +00:00
2f70a199e4 Add deny dead_code lint and fix one error 2019-08-01 20:46:35 -06:00
83aa9c67c7 Replace throw() with noexcept. Unlike throw(), noexcept indicates that the function does not throw.
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.
2019-08-01 17:13:23 -07:00
ac49e57c2d Run clang-format-8 over the C++ code. No functionality change. 2019-08-01 17:12:46 -07:00
536f9813dc Implement InternalEvent::Breakpoint in the llvm backend.
Enable now-working metering unit tests when run with the llvm backend.
2019-08-01 12:44:25 -07:00
9ed5094f86 Resolve semantics for more values. 2019-08-01 23:28:39 +08:00
0dfa1f68a8 Formatted code 2019-07-31 23:51:12 -07:00
ebce7d0371 Updated dependencies 2019-07-31 23:42:54 -07:00
a6461c3b14 Removed explicit hashbrown dependency 2019-07-31 23:18:38 -07:00
6245daaa84 Update dependencies to latest versions 2019-07-31 23:04:03 -07:00
20e424c11e update wasmparser and clif-fork dependencies 2019-08-01 10:13:25 +09:00
54b5c642dc Merge branch 'master' into features/llvm-metering 2019-07-31 13:13:07 -07:00
931d556de1 Add support for internal fields. 2019-07-31 13:10:51 -07:00
fccf68c734 Updated version to 0.6.0 2019-07-31 10:28:45 -07:00
0256a6eb88 Merge branch 'master' into features/llvm-windows 2019-07-30 17:38:36 -07:00
97c6956d98 Added llvm in windows support to Changelog 2019-07-30 15:56:25 -07:00
22f8b3f3dc Improved LLVM compilation for Unix 2019-07-30 15:32:21 -07:00
89178732cc Fixed unix errors 2019-07-30 15:23:03 -07:00
bdb1c4c44e Fix inkwell assertion due to treating vector as float. Fix llvm backend fatal error due to missing support for fminimum/fmaximum. 2019-07-30 14:59:04 -07:00
12f8f3d085 First working version of LLVM in Windows 2019-07-30 14:47:53 -07:00
3e7545a278 Fix the Trunc[SU] operations, makes conversions.wast pass. 2019-07-30 12:42:25 -07:00
0a7f95ee06 Allow a range of instruction offsets to be used in ip lookup. 2019-07-30 22:25:15 +08:00
11f66d287b Improve NaN handling by canonicalizing NaNs before most operations.
Not handled here is @llvm.minnum and @llvm.maxnum which should be replaced with
@llvm.minimum and @llvm.maximum, but using those currently leads to LLVM backend
fatal errors.
2019-07-28 22:53:48 -07:00
2f021f0e2a LLVM srem is undefined in cases where i32.rem_s and i64.rem_s are defined. 2019-07-28 22:53:48 -07:00
efb5277d1d Stack parsing now works with LLVM. 2019-07-27 02:50:49 +08:00
659f088c4f llvm-backend: export FunctionCodeGenerator and ModuleCodeGenerator
This is in line with the singlepass-backend to be able to use LLVM MCG with
a StreamingCompiler.
2019-07-24 18:46:35 -07:00
76daa7b3fd Improved Wasmer Backends documentation 2019-07-24 18:06:59 -07:00
cc4f0e31a6 TwoHalves & trying to get cowsay to compile again 2019-07-25 02:44:28 +08:00
f763de94ab Update to wabt 0.9.0. 2019-07-24 10:03:08 -07:00
16fe3ce0af Merge branch 'master' into simd 2019-07-23 13:51:15 -07:00
fe2bd6ad6c Add missing names to LLVM instructions. 2019-07-23 13:19:27 -07:00
ad7e3b52d3 Prepare for release of 0.5.7 2019-07-23 11:20:59 -07:00
18307bb79c Improve panic/unreachable/unimplemented usage. Refactor a little. 2019-07-22 12:15:56 -07:00
0133b92bec Populating LLVM stack maps into MSM/FSM. 2019-07-23 02:55:43 +08:00
775c120b38 Update to newer wasmerio/wabt-rs. 2019-07-19 15:48:50 -07:00
cd25356858 Fix shuffle and enable tests. Add support for new load_splat instructions.
Updates to wasmparser 0.34.0 and picks up a newer wasmerio/wabt.
2019-07-19 15:19:58 -07:00
3e009c5971 Reformat. 2019-07-18 13:40:24 -07:00
3be6a024aa Fix bugs in V128 support based on results from testing against simd spec test.
These is one test failure remaining with V128 global variables.

* Fix trunc_sat. We need both the largest float that can be converted to an int
  and the largest int, they are not the same number.
* Implement calling of functions that take V128 by passing in two i64's.
* Improve support for V128 in spectests. Parse binary modules with the same
  features as the outer spectest. Fix compilation error involving Result in
  emitted .rs file. Handle V128 in more cases when producing .rs file. Parse
  the wast script with SIMD enabled.
* Adjust the WAVM spectest so that it parses with WABT and mostly passes with
  wasmer. Wabt is particular about ints not having decimal places and floats
  having decimal places. Wasmer does not support mutable globals or shared
  memory. Tests of shuffles are disabled. Some assert_invalid tests that wabt
  won't even parse are disabled.
2019-07-18 12:52:59 -07:00
2e030c9c4a Parsing LLVM stackmaps. 2019-07-19 02:02:15 +08:00
a14a8e4c50 Emit stack map at critical points. 2019-07-18 02:43:04 +08:00
eeac6d5d2d Merge branch 'master' of github.com:wasmerio/wasmer into simd 2019-07-16 19:16:45 -07:00
19f544e489 update to 0.5.6 2019-07-16 13:12:21 -07:00