Commit Graph

1865 Commits

Author SHA1 Message Date
Brandon Fish
03cabce2d5 Fix emscripten table assertion panic 2019-08-16 09:12:46 -06:00
Brandon Fish
bccbbb3d8b Add deny nonstandard-style and unused-mut lints 2019-08-15 20:18:29 -06:00
losfair
afa0600701 Cargo fmt 2019-08-15 19:13:00 -07:00
losfair
6a24485999 Insert trampolines to preserve callee-saved registers for backends without register save area information. 2019-08-15 19:10:24 -07:00
Brandon Fish
98d3e04137 Fix unused mut warning 2019-08-15 20:09:51 -06:00
losfair
0a54213d4f register_preservation_trampoline 2019-08-15 19:08:11 -07:00
losfair
7028df23ef Allow only integers for LLVM function param/return values. 2019-08-15 19:07:03 -07:00
Brandon Fish
439e81d41e Fix singlepass error when no function code present 2019-08-15 10:15:58 -06:00
bors[bot]
995f40564e Merge #671
671: Add wasi::poll_oneoff for Unix r=MarkMcCaskey a=MarkMcCaskey

Part of #570

Co-authored-by: Mark McCaskey <mark@wasmer.io>
Co-authored-by: Mark McCaskey <markmccaskey@users.noreply.github.com>
2019-08-15 07:58:35 +00:00
Mark McCaskey
0c45707d33 implement wasi::poll_oneoff for write on Unix-like platforms 2019-08-15 15:51:16 +09:00
Mark McCaskey
d733989657 Add wasi::poll_oneoff file read test 2019-08-15 13:13:20 +09:00
losfair
1582224d61 Cargo fmt 2019-08-14 17:16:30 -07:00
losfair
9edd9ffdfe Make lookup_*_ip public. 2019-08-14 17:14:01 -07:00
losfair
c9e3db3d94 Remove feature(core_intrinsics) 2019-08-14 16:41:44 -07:00
losfair
98ef9182d7 Run clang-format and cargo fmt 2019-08-14 16:35:40 -07:00
losfair
0e0573c73c Merge remote-tracking branch 'origin/master' into feature/llvm-osr 2019-08-14 16:33:26 -07:00
Mark McCaskey
ec20e325fb Feature gate Unix-specific polling code 2019-08-14 16:38:57 +09:00
Mark McCaskey
34340692bf
Merge branch 'master' into feature/wasi-polloneoff 2019-08-14 16:14:47 +09:00
Mark McCaskey
8c03338330 Implement wasi::poll_oneoff more properly for Unix 2019-08-14 15:51:39 +09:00
Nick Lewycky
2f3c9c3e2f Mark memory.size VM intrinsics as not modifying state, and throw.trap/breakpoint as functions which do not return. 2019-08-13 21:50:54 -07:00
Brandon Fish
8e46e797ac Compare float bits in spectests assert return 2019-08-13 22:14:10 -06:00
Brandon Fish
0bf33662d1 Add missing LLVM imported memory functions 2019-08-13 20:07:55 -06:00
Brandon Fish
137ac206af Return compile error (llvm) for setting immutable global 2019-08-13 17:59:04 -06:00
Brandon Fish
de8fe32dbe Add memory validation 2019-08-13 13:04:13 -06:00
Mark McCaskey
09b056cc40 Add wip wasi::poll_oneoff work 2019-08-13 16:59:01 +09:00
Syrus Akbary
5239cdb85a
Merge pull request #668 from wasmerio/feature/update-wabt-to-fix-names-spectests
Update WABT dep to fix names spectests
2019-08-13 00:13:36 -07:00
Brandon Fish
f22250d85a Refactor func_count in parser 2019-08-12 21:36:17 -06:00
Brandon Fish
e76777ed9b Finalize signatures & names when no function bodies 2019-08-12 20:22:54 -06:00
Brandon Fish
d695bd0c84 Update WABT dep to fixe names spectests 2019-08-12 15:35:32 -06:00
Brandon Fish
20cb7c0048
Merge branch 'master' into feature/unexclude-passing-elem-spec 2019-08-11 18:04:54 -06:00
Brandon Fish
9b4ba66e11 Add code comment explanation of validation 2019-08-11 13:59:48 -06:00
Brandon Fish
c837b56678 Unexclude passing elem spec 2019-08-11 13:52:57 -06:00
Brandon Fish
f61fc5c298 Validate all initializers before finalizing 2019-08-11 13:28:47 -06:00
Brandon Fish
38a8a0eb01 Minimize unsafe block to unsafe code 2019-08-10 17:20:27 -06:00
Brandon Fish
b7970fb982 Uncomment slow exclude test again 2019-08-10 17:11:32 -06:00
Brandon Fish
0b73776c84 Validate all memory data initializers before writing 2019-08-10 17:10:24 -06:00
Brandon Fish
228d562a3b Re-use registered module instances in spectests 2019-08-10 15:56:25 -06:00
Brandon Fish
db5d8a5bf8 Push debug print to debug CI failure 2019-08-10 15:33:08 -06:00
Brandon Fish
4651b43078
Merge branch 'master' into feature/fix-table-init-error 2019-08-10 15:19:02 -06:00
Brandon Fish
a621b86286 Update windows excludes 2019-08-10 15:04:24 -06:00
Brandon Fish
b484ebb848 cargo fmt 2019-08-10 14:01:50 -06:00
Brandon Fish
bb8b4960b8 Remove filter which prevents initializer offset check 2019-08-10 13:59:31 -06:00
Brandon Fish
1584beebe6 Invalid table size for elems should produce link error 2019-08-10 12:13:14 -06:00
Brandon Fish
6372e0947c Fix more bare dyn traits in runtime-c-api 2019-08-10 11:20:22 -06:00
Brandon Fish
8ec4c0e01d
Merge branch 'master' into feature/fix-namespace-table-issue 2019-08-09 14:12:25 -06:00
losfair
44f71759f6 Use Vec::with_capacity in various places. 2019-08-10 03:23:29 +08:00
losfair
9cade2b441 singlepass: Skip patchpoint. 2019-08-10 03:10:32 +08:00
losfair
d61a8bb6d2 Prevent continueing execution on unreliable stack. (LLVM register save area information is missing) 2019-08-10 03:10:12 +08:00
losfair
2e89f02191 Cargo fmt 2019-08-10 02:44:44 +08:00
losfair
b8c18215aa Refactor tier switching code 2019-08-10 02:32:14 +08:00
Syrus Akbary
f909f7ed1f
Merge pull request #650 from wasmerio/feature/wasi-path-rename
implement wasi::path_rename
2019-08-09 01:09:23 -07:00
Mark McCaskey
61f1df06d1 implement wasi::path_rename 2019-08-09 15:40:04 +09:00
Brandon Fish
7f0c48b354 Add windows clif excludes 2019-08-08 21:12:36 -06:00
Brandon Fish
a7ff120dd9 Fix some spectest imports and namespace_table issue 2019-08-08 21:03:00 -06:00
Syrus
d39d4b5f6d Remove structopt dependency from LLVM 2019-08-08 19:42:41 -07:00
bors[bot]
27d8506a46 Merge #643
643: Improve error reporting of IO errors, implement path_symlink r=MarkMcCaskey a=MarkMcCaskey



Co-authored-by: Mark McCaskey <mark@wasmer.io>
2019-08-09 00:34:22 +00:00
Nick Lewycky
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
bors[bot]
77fe15db31 Merge #646
646: Fix bare_trait_objects warnings r=bjfish a=bjfish

These appear to be coming to stable soon:
https://github.com/rust-lang/rust/blob/master/RELEASES.md#compatibility-notes

Co-authored-by: Brandon Fish <brandon.j.fish@gmail.com>
2019-08-08 23:25:07 +00:00
Brandon Fish
5a41686192 Fix bare_trait_objects warnings 2019-08-08 16:46:52 -06:00
Nick Lewycky
02f1d73f88 Reformat. 2019-08-08 13:55:44 -07:00
Nick Lewycky
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
losfair
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
losfair
0d604b754b Commented out code for saving semantics of internal values. 2019-08-08 21:54:39 +08:00
Mark McCaskey
d0696a0c0e implement wasi::path_symlink test & fix readlink test 2019-08-08 16:42:27 +09:00
Brandon Fish
55f214b3ac
Merge branch 'master' into feature/unexclude-some-passing-unlinkable 2019-08-07 23:19:40 -06:00
Brandon Fish
1c32e2a4af Add windows specific clif failures 2019-08-07 23:10:50 -06:00
Mark McCaskey
cdfd9afccc Improve error reporting of IO errors, begin implementation of path_symlink 2019-08-08 11:59:35 +09:00
Brandon Fish
0b0a77413e Unexclude some now passing assert_unlinkable 2019-08-07 19:45:31 -06:00
bors[bot]
205d7081f5 Merge #640
640: Protect::ReadWriteExec is readable and writable. r=syrusakbary a=nlewycky

Also assert that page size is a power of two in two places we assume it is.

Co-authored-by: Nick Lewycky <nick@wasmer.io>
2019-08-08 01:36:19 +00:00
bors[bot]
321ca4e565 Merge #635
635: Update spectests and runner r=bjfish a=bjfish



Co-authored-by: Brandon Fish <brandon.j.fish@gmail.com>
Co-authored-by: Nick Lewycky <nick@wasmer.io>
Co-authored-by: Syrus <me@syrusakbary.com>
2019-08-08 00:51:59 +00:00
Mark McCaskey
b8f8a637c1
Merge branch 'master' into feature/more-wasi-syscalls 2019-08-07 16:55:03 -07:00
Nick Lewycky
75959577c3 Protect::ReadWriteExec is readable and writable.
Also assert that page size is a power of two in two places we assume it is.
2019-08-07 16:49:29 -07:00
Brandon Fish
8763d2cbde
Merge branch 'master' into feature/spectests-runner 2019-08-07 16:50:06 -06:00
Brandon Fish
5d9aa1f986 Return link error instead of assertion failure for bad data initialization 2019-08-07 15:40:42 -06:00
losfair
b113f5a24b longjmp turns out to work on Windows. Remove custom unwinding code. 2019-08-08 03:19:19 +08:00
Mark McCaskey
ddb0b99f12 implement path_link updated unlink, fix tests, add new test 2019-08-07 16:11:38 +09:00
Mark McCaskey
6ad0be1e02 add fd_sync test 2019-08-07 12:41:35 +09:00
Mark McCaskey
dbe96bbce9 add wasi::fd_sync 2019-08-07 12:17:52 +09:00
Brandon Fish
dc8384ed22 Add windows specific excludes 2019-08-06 21:03:09 -06:00
Brandon Fish
b7236a58fc Add support for platform star key skip exclude 2019-08-06 20:06:34 -06:00
losfair
4b1d337ebe Custom setjmp/longjmp to avoid SEH. (will it work?) 2019-08-07 00:38:42 +08:00
losfair
b50fd31adb Use setjmp/longjmp to handle LLVM exceptions. 2019-08-07 00:06:35 +08:00
Brandon Fish
8c13eae2b8 Allow platform specific excludes 2019-08-05 20:57:07 -06:00
Brandon Fish
a56aaeaaa3 Add additional spectest imports 2019-08-05 19:25:12 -06:00
Brandon Fish
03e1b3d8e8 Remove unnecessary println and make spectest runs nocapture 2019-08-05 18:58:51 -06:00
Brandon Fish
540520e54e cargo fmt 2019-08-05 17:55:41 -06:00
Brandon Fish
dc94cfb7b8 Merge branch 'master' into feature/spectests-runner 2019-08-05 17:53:04 -06:00
Brandon Fish
c65abf8ff5 Delete unused commented out println 2019-08-05 17:52:44 -06:00
Brandon Fish
08eb113394 Output failures in exclude format and add all failures as excludes 2019-08-05 17:51:02 -06:00
Nick Lewycky
1d54a938f6 Fix a couple bugs testing NaNs. Add an exclusion list for LLVM min/max. 2019-08-05 15:38:03 -07:00
Syrus Akbary
07e6599a28
Merge branch 'master' into feature/instance-benchmark 2019-08-05 15:07:58 -07:00
Syrus
47456b5baa Fixed formatting 2019-08-05 14:37:08 -07:00
Syrus
fed7c79923 Added extra assertions in Emscripten. Fixed #244 2019-08-05 14:15:36 -07:00
Syrus
ea5affc05d Remove svm mentions in wasmer c api codebase 2019-08-05 11:49:16 -07:00
Syrus Akbary
6692978926
Merge branch 'master' into dependabot/cargo/blake2b_simd-0.5.6 2019-08-05 10:57:06 -07:00
dependabot-preview[bot]
50ebbc500f
Bump blake2b_simd from 0.5.5 to 0.5.6
Bumps [blake2b_simd](https://github.com/oconnor663/blake2_simd) from 0.5.5 to 0.5.6.
- [Release notes](https://github.com/oconnor663/blake2_simd/releases)
- [Commits](https://github.com/oconnor663/blake2_simd/compare/0.5.5...0.5.6)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-08-05 08:38:35 +00:00
dependabot-preview[bot]
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
Mark McCaskey
061d540627 Implement wasi::path_filestat_set_times 2019-08-05 15:53:42 +09:00
Mark McCaskey
6db7bd8f07 get fd_allocate test working 2019-08-05 14:01:04 +09:00
Mark McCaskey
f0eb85a919 refactor wasi state file to hide boilerplate 2019-08-05 11:59:32 +09:00
Mark McCaskey
c2e3847e9a add check for fd_allocate, improve debug str for filestat_t 2019-08-05 11:24:06 +09:00
Mark McCaskey
8f06db45a1 format emitter with current stable Rust 2019-08-05 09:58:54 +09:00
Mark McCaskey
09acf3e581
Merge branch 'master' into feature/more-wasi-syscalls 2019-08-05 09:55:40 +09:00
Brandon Fish
43ae30985c Cleanup test runner 2019-08-04 16:44:27 -06:00
Brandon Fish
e3d78a1343 Implement allowed failures 2019-08-04 16:13:47 -06:00
Brandon Fish
b8610e799f Update README.md, remove old README.md, remove old spectest code 2019-08-04 15:53:48 -06:00
Brandon Fish
93233eb4b4 Implement registered modules 2019-08-04 15:36:17 -06:00
Brandon Fish
5c3edabb7c Enable simd compile 2019-08-04 14:44:55 -06:00
Brandon Fish
665f8707dc Implement named modules 2019-08-04 14:20:09 -06:00
Brandon Fish
8c911cb1c3 Implement action get for assert return 2019-08-04 13:37:39 -06:00
Brandon Fish
7060785d8d Implement assert_exhaustion 2019-08-04 13:18:57 -06:00
Brandon Fish
36bcda711f Update spectests and run by globbing wast files 2019-08-04 12:42:20 -06:00
Brandon Fish
9a33ece373 Merge branch 'master' into feature/spectests-runner 2019-08-04 11:34:22 -06:00
Brandon Fish
0583ae4846 Add system to skip wast commands to allow failures or skipping 2019-08-04 11:25:46 -06:00
Brandon Fish
f0cdb97320 Add invoke action and imports 2019-08-04 10:19:50 -06:00
Brandon Fish
7d376e18ee Add debug line info 2019-08-03 18:07:23 -06:00
Brandon Fish
021fefcdee Disable unlinkable spec temporarily, specs timeout 2019-08-03 17:57:34 -06:00
Brandon Fish
f46d07b5b3 Add more assertions 2019-08-03 17:31:43 -06:00
Yaron Wittenstein
8d583ad4d4 runtime-c-api: Cargo.toml - adding default-features=false for wasmer-runtime and wasmer-runtime-core dependencies 2019-08-03 22:47:36 +03:00
Yaron Wittenstein
a06fa40faa runtime-c-api: adding feature default-backend-singlepass to Cargo.toml 2019-08-03 22:03:21 +03:00
Yaron Wittenstein
9e51c39144 Cargo.toml - configuring singlepass feature 2019-08-03 11:54:59 +03:00
Nick Lewycky
9fcb06a270 Missed a line! 2019-08-02 16:49:28 -07:00
Nick Lewycky
59ef811b46 Update readme. 2019-08-02 16:48:34 -07:00
Brandon Fish
22808d1dba Implement spectests summary report 2019-08-02 16:00:35 -06:00
Nick Lewycky
546969a742 These tests are fixed too. 2019-08-02 14:33:11 -07:00
Nick Lewycky
2fabb5bc20 Add support for (register) command in spec tests and enable importing mutable globals.
Enable the part of the simd spec tests that now pass.
2019-08-02 14:18:07 -07:00
Syrus Akbary
17b5082c9b
Merge pull request #621 from wasmerio/feature/add-deny-dead_code-lint
Add deny dead_code lint and fix one error
2019-08-02 13:36:53 -07:00
Brandon Fish
b358605791 One CamelCase style cleanup and allow dead code warning 2019-08-02 14:14:59 -06:00
Brandon Fish
e2e096117a Allow dead_code for existing arch specific methods 2019-08-02 14:07:10 -06:00
Yaron Wittenstein
c67df1c954 Merge branch 'master' into c-api-import_object_t 2019-08-02 22:54:54 +03:00
Yaron Wittenstein
eed3b28eab comment cleanup 2019-08-02 22:54:00 +03:00
Brandon Fish
21ea2465c0 Catch panicking tests 2019-08-02 11:36:38 -06:00
Brandon Fish
2f70a199e4 Add deny dead_code lint and fix one error 2019-08-01 20:46:35 -06:00
Nick Lewycky
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
Nick Lewycky
ac49e57c2d Run clang-format-8 over the C++ code. No functionality change. 2019-08-01 17:12:46 -07:00
Nick Lewycky
5fed2cef03 Fix typos. 2019-08-01 16:24:40 -07:00
nlewycky
bebc3eefe4
Merge branch 'master' into features/llvm-metering 2019-08-01 13:01:10 -07:00
Nick Lewycky
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
Yaron Wittenstein
18c7f96188 Merge branch 'master' into c-api-import_object_t 2019-08-01 22:27:41 +03:00
Brandon Fish
dfef2b6899
Merge branch 'master' into clif-backend 2019-08-01 11:59:02 -06:00
Yaron Wittenstein
f64eee894e [FIX] test-context.c imports contains now the expected mul import too 2019-08-01 19:31:33 +03:00
losfair
9ed5094f86 Resolve semantics for more values. 2019-08-01 23:28:39 +08:00
Yaron Wittenstein
3f4ffb0e2d Merge branch 'develop' into c-api-import_object_t 2019-08-01 18:15:21 +03:00
Pekka Enberg
869ac21f7b clif-backend: Eliminate FunctionEnvironment construction in feed_event()
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.
2019-08-01 18:06:40 +03:00
Yaron Wittenstein
524585942a deleting test-context binary 2019-08-01 17:24:51 +03:00
Yaron Wittenstein
09d704d053 Merge branch 'master' into c-api-extract-instance_context-from-instance 2019-08-01 14:08:47 +03:00
Yaron Wittenstein
f73180f45e wasmer-c-api:
* adding `wasmer_import_object_new` and `wasmer_import_object_extend`
* adding test file `test-module-import-instantiate.c`
2019-08-01 14:06:25 +03:00
Syrus
70a767e204 Improved exported memory tests 2019-08-01 01:28:11 -07:00
Syrus
2c6fbcba1f Improved runtime_c_api_tests 2019-08-01 01:27:36 -07:00
Syrus
052ad1381d Use ordered IndexMap for exports in runtime-core 2019-08-01 01:27:21 -07:00