Commit Graph

2285 Commits

Author SHA1 Message Date
Ivan Enderlin
42b02bee71 fix(runtime-c-api) Write macros at column 0. 2019-11-14 14:37:06 +01:00
Brandon Fish
929bff9df8 Add deny missing docs to runtime lib 2019-11-13 22:59:21 -06:00
bors[bot]
fff16c08d0
Merge #965
965: Add categories and keywords to `Cargo.toml`s r=MarkMcCaskey a=MarkMcCaskey



Co-authored-by: Mark McCaskey <mark@wasmer.io>
2019-11-13 23:47:56 +00:00
Mark McCaskey
9127eaf825 Add categories and keywords to Cargo.tomls 2019-11-13 15:46:09 -08:00
Ivan Enderlin
c4dffd6f59 doc(runtime-core) Fix typos. 2019-11-13 15:55:45 +01:00
Ivan Enderlin
7b809a765f doc(runtime-core) Improve documentation of func!.
This patch explains that `func!` can consume closures.
2019-11-13 15:54:41 +01:00
Ivan Enderlin
82e4d8e6cc feat(runtime-core) func! supports closures.
This patch allows to write:

```rs
func!(|…| -> … { … })
```
2019-11-13 15:54:09 +01:00
Ivan Enderlin
4e4663cc98
Merge branch 'master' into fix-runtime-c-api-header-preprocessor-clang 2019-11-13 15:53:01 +01:00
Ivan Enderlin
be9d7f2e6e chore(runtime-c-api) Update header files. 2019-11-13 15:29:33 +01:00
Ivan Enderlin
b081d17ab0 feat(runtime-c-api) Add support for clang in WASMER_H_MACROS. 2019-11-13 15:28:57 +01:00
Ivan Enderlin
645519c29c fix(runtime-c-api) Use #if defined instead of #ifdef. 2019-11-13 15:28:04 +01:00
Ivan Enderlin
8f20a28ab1
Merge branch 'master' into feat-runtime-core-field-offset 2019-11-13 13:22:41 +01:00
losfair
605ada7ad7 Run cargo fmt. 2019-11-13 14:53:34 +08:00
losfair
08a1dd3e8c Merge master and add documentation. 2019-11-13 14:52:22 +08:00
losfair
e2956e7b1a Run cargo fmt 2019-11-13 14:34:04 +08:00
losfair
47f1e2a4ef Fix parameter loading. 2019-11-13 14:18:21 +08:00
losfair
c552514fd2 Disable NaN canonicalizing on aarch64. 2019-11-13 11:35:44 +08:00
Brandon Fish
af12bf4f68
Merge branch 'master' into feature/deny-missing-docs-clif-backend 2019-11-12 11:43:54 -06:00
losfair
f1339b4033 Fix known_registers size. 2019-11-13 01:00:27 +08:00
Ivan Enderlin
a1e8a8f0db fix(runtime-core) Same bug with field-offset as before.
It will be fixed in a following PR.
2019-11-12 15:17:36 +01:00
Ivan Enderlin
0775d496d3 feat(runtime-core) Replace the field-offset crate by a custom offset_of! macro.
The `field-offset` crate is unmaintained. When using its `offset_of!`
macro on a struct with a field of type `std::ptr::NonNull`, in release
mode, it generates a sigill.

This patch removes the `field-offset` crate, and implements a custom
`offset_of!` macro.
2019-11-12 15:12:31 +01:00
Ivan Enderlin
89859a9ab5 Merge branch 'master' into feat-runtime-core-clos-host-function 2019-11-12 14:36:33 +01:00
Ivan Enderlin
0de7f4fd0b test(runtime-core) offset_of! fails with a struct containing NonNull types.
It fails only in release mode. That's a bug from the `field-offset`
crate. This patch is a temporary fix.
2019-11-12 14:34:55 +01:00
Brandon Fish
91b5059506 Deny missing docs in the clif backend crate 2019-11-11 20:05:04 -06:00
Mark McCaskey
69950d9e5f Prepare for 0.10.1 release 2019-11-11 16:22:37 -08:00
Ivan Enderlin
22abd8efdc doc(runtime-core) Add missing doc on vm::FuncCtx. 2019-11-12 01:10:32 +01:00
Ivan Enderlin
cf33bf8b20
Merge branch 'master' into feat-runtime-core-clos-host-function 2019-11-12 00:58:24 +01:00
Ivan Enderlin
95706160ee Merge branch 'master' into feat-runtime-core-clos-host-function 2019-11-12 00:55:40 +01:00
Ivan Enderlin
bb81614be4 feat(llvm-backend) Update ImportedFunc structure.
`vm::ImportedFunc` in `runtime-core` has changed. Update LLVM accordingly.
2019-11-12 00:52:14 +01:00
Ivan Enderlin
06c6b3c8e8 feat(runtime-core) More ABI compatible definition of Func and FuncEnv. 2019-11-12 00:52:14 +01:00
Ivan Enderlin
11f34a9285 feat(clif-backend,singlepass-backend) Feed imported functions with FuncCtx.vmctx. 2019-11-12 00:51:57 +01:00
Ivan Enderlin
98e4ef066a feat(runtime-core) Feed imported functions with vm::Ctx again.
… and look for the associated `vm::FuncCtx`. This way, we don't break
the rule: “all functions receive a vmctx pointer as first argument.”.
2019-11-12 00:50:25 +01:00
Mark McCaskey
e121c47f18 Generate C preprocessor code to hide things not on Windows 2019-11-11 14:47:25 -08:00
Mark McCaskey
0a216c0779 Prepare for 0.10.0 release 2019-11-11 12:13:53 -08:00
bors[bot]
25ebbaae3d
Merge #923
923: Add probable fix of memory leak in trampoline code r=MarkMcCaskey a=MarkMcCaskey

might be what's needed for #810 ; but despite my best efforts I could not get asan working on osx, so I did not test it.

By my count this accounts for 40 bytes, so there may be another issue

edit: unless Rust is optimizing out turning a zero-sized type into a Box, in which case, this should account for 48 bytes

Co-authored-by: Mark McCaskey <mark@wasmer.io>
2019-11-11 18:57:12 +00:00
bors[bot]
8233f4cae4
Merge #941
941: Emit direct calls for local functions. r=nlewycky a=nlewycky



Co-authored-by: Nick Lewycky <nick@wasmer.io>
2019-11-11 17:52:10 +00:00
Brandon Fish
a74acb7a8a Add missing rustdoc for macro debug 2019-11-10 16:28:33 -06:00
Brandon Fish
ea3b6fa6d7 Add missing rustdocs for Windows code 2019-11-10 16:03:43 -06:00
Brandon Fish
82ec5e970a Add additional rustdocs for missing docs found during CI 2019-11-10 15:16:07 -06:00
Brandon Fish
2d00b2589e Update with PR review suggestions 2019-11-10 14:37:36 -06:00
Brandon Fish
1f9316b5ae Update Protect enum with suggestions 2019-11-10 14:31:36 -06:00
Brandon Fish
328ab0a93b Remove macro identifiers which don't work in rustdoc comments 2019-11-10 13:43:39 -06:00
Brandon Fish
aad390d09d Deny missing docs in runtime core and add missing docs 2019-11-10 13:13:18 -06:00
losfair
03c5614203 Rerun cargo fmt 2019-11-11 02:00:16 +08:00
losfair
03a9d1ad60 Cargo fmt 2019-11-11 01:43:16 +08:00
losfair
7d5699c19d Add missing instructions for aarch64. 2019-11-11 01:43:01 +08:00
losfair
899fbed35d Merge master. 2019-11-11 01:42:43 +08:00
Mark McCaskey
adc9f3d479 Explicitly delete temp file in fd_append test 2019-11-08 16:33:08 -08:00
Nick Lewycky
ed6ce4b9b4 Don't create functions for imports, we still call those indirectly. 2019-11-08 14:44:59 -08:00
Nick Lewycky
2957b6abd8 Emit direct calls for local functions, but not for imports. 2019-11-08 14:44:50 -08:00
Syrus Akbary
3341528f71
Merge branch 'master' into fix/wasi-append 2019-11-08 14:21:24 -08:00
Nick Lewycky
674a70fa05 Create function declarations before starting the body of the first function. 2019-11-08 13:13:58 -08:00
Mark McCaskey
a94fabf56e Update supported Rust version to 1.38 2019-11-08 11:40:53 -08:00
Mark McCaskey
64783423ea Fix WASI append bug, add test 2019-11-08 11:17:04 -08:00
Nick Lewycky
dccaa3a285 Apply TBAA to the correct instruction.
Another instance of the bug in PR #933.
2019-11-07 12:42:29 -08:00
Ivan Enderlin
ba87af5b1a feat(runtime-core) Ability for an export function to get a func env. 2019-11-07 20:44:17 +01:00
Ivan Enderlin
2e05104d45 fix(runtime-core) Introduce Context::ExternalWithEnv.
Host functions use `Context::External` with a `*mut vm::FuncCtx`
pointer, casted to `*mut vm::Ctx`. It creates a conflict with exports
that also use `Context::External`.

This patch introduces `Context::ExternalWithEnv` to create a specific
path in the code for an external context with `*mut vm::FuncEnv`.

This patch fixes all the `linking.wast` tests in the spectests.
2019-11-07 14:32:19 +01:00
Ivan Enderlin
dfaad35f8d fix(spectests) Remove a warning. 2019-11-07 14:31:43 +01:00
Nick Lewycky
203efd0c06 Apply TBAA to the correct instruction.
Caught by LLVM verifier complaining about !tbaa on a getelementptr.
2019-11-06 23:25:39 -08:00
losfair
50c30ab212 runtime-core: Support cross-compilation. 2019-11-07 01:30:45 +08:00
losfair
001213716e Add fneg. 2019-11-07 01:30:27 +08:00
losfair
6135a004a4 Add itruncf/fconverti fast path. 2019-11-07 01:11:25 +08:00
Ivan Enderlin
cf74b68c37 Merge branch 'master' into feat-runtime-core-clos-host-function 2019-11-06 14:48:47 +01:00
Ivan Enderlin
6f84a6f15b test(runtime-core) Remove a warning in tests. 2019-11-06 14:48:47 +01:00
Ivan Enderlin
5ccaf12b2a doc(runtime-core) Fix inline documentations. 2019-11-06 14:48:47 +01:00
Ivan Enderlin
c4c88f8af5 fix(runtime-core) Remove undefined behavior with mem::transmute.
In the `wrap` functions, we use `std::mem::transmute(&())` to get the
pointer to the value “around” `wrap` (`Fn` has a method `to_raw` which
declares a `wrap` function, which uses `transmute` to retrieve
`Fn`). This is an undefined behavior. It was working until the
`FuncCtx` is introduced. Since then, the undefined behavior was
causing an error with the Singlepass backend.

This patch stores the pointer to `Fn` in `func_env`, so that the
pointer to the user-defined host function is always predictable.
2019-11-06 14:48:46 +01:00
Ivan Enderlin
a4ba429ed0 feat(singlepass-backend) Inject FuncCtx to the function pointer of an host function. 2019-11-06 14:48:46 +01:00
Ivan Enderlin
215e4458f0 Merge branch 'master' into feat-runtime-core-clos-host-function 2019-11-06 14:48:46 +01:00
Ivan Enderlin
a9e0e9baeb test(runtime-core) Write more documentation. 2019-11-06 14:48:46 +01:00
Ivan Enderlin
293b71ac54 doc(runtime-core) Write more documentation. 2019-11-06 14:48:46 +01:00
Ivan Enderlin
0f82cd3c40 doc(runtime-core) Write more documentation. 2019-11-06 14:48:46 +01:00
Ivan Enderlin
81326cee13 doc(runtime-core) Write more documentation. 2019-11-06 14:48:46 +01:00
Ivan Enderlin
3435ce436b test(runtime-core) Extract assert as tests. 2019-11-06 14:48:46 +01:00
Ivan Enderlin
a52b4b2280 test(runtime-core) Test closures with a captured environment. 2019-11-06 14:48:46 +01:00
Ivan Enderlin
3b34a9187a chore(runtime-core) Remove dbg!. 2019-11-06 14:48:46 +01:00
Ivan Enderlin
2a041f898e !temp 2019-11-06 14:48:46 +01:00
Ivan Enderlin
0e27f2fa72 test(runtime-core) Test more host functions as closures. 2019-11-06 14:48:46 +01:00
Ivan Enderlin
6035bd2d9b feat(runtime-core,clif-backend,llvm-backend) Rename an ImportFunc offset.
`ImportedFunc::offset_vmctx` becomes `ImportedFunc::offset_func_ctx`.
2019-11-06 14:48:46 +01:00
Ivan Enderlin
e002c377ef feat(runtime-core) vm::ImportedFunc and vm::FuncCtx have NonNull pointers. 2019-11-06 14:48:46 +01:00
Ivan Enderlin
177c507a4e feat(runtime-core) Introduce vm::FuncCtx.
`vm::FuncCtx` replaces `vm::Ctx` as first argument passed to host
functions (aka imported functions).
2019-11-06 14:48:46 +01:00
nlewycky
dc437bb4e7
Fix typo in comment. 2019-11-05 11:31:14 -08:00
bors[bot]
c07e6058f9
Merge #929
929: Update __wasi_rights_t and __wasi_signal_t with published changes r=MarkMcCaskey a=MarkMcCaskey

Follow up to #926 ; fixes everything else listed at https://github.com/WebAssembly/WASI/pull/135

Co-authored-by: Mark McCaskey <mark@wasmer.io>
2019-11-05 18:24:43 +00:00
losfair
015491ea77 Add floating point instructions. 2019-11-06 01:43:41 +08:00
bors[bot]
5f9670fc19
Merge #931
931: Build Metadata using the current Context. r=nlewycky a=nlewycky

Fixes #927. Reverts #928.


Co-authored-by: Nick Lewycky <nick@wasmer.io>
2019-11-05 00:27:52 +00:00
Nick Lewycky
1d8f2b767d Build Metadata using the current Context.
Fixes #927. Reverts #928.
2019-11-04 15:27:38 -08:00
Mark McCaskey
ef5faccb76 Update __wasi_rights_t and __wasi_signal_t with published changes 2019-11-04 13:45:19 -08:00
bors[bot]
bbcccafc54
Merge #926 #928
926: Fix values of __wasi_advice_t r=nlewycky a=MarkMcCaskey

Issue identified in https://github.com/WebAssembly/WASI/issues/132 ; 

928: Add workaround for #927. r=MarkMcCaskey a=nlewycky

# Description

Add `--test-threads 1` to workaround #927.

Co-authored-by: Mark McCaskey <mark@wasmer.io>
Co-authored-by: Nick Lewycky <nick@wasmer.io>
2019-11-04 19:20:34 +00:00
Mark McCaskey
aaa0160c95 Fix values of __wasi_advice_t 2019-11-04 10:48:42 -08:00
bors[bot]
69cc2f60bb
Merge #920
920: Export WasmPtr from wasmer_runtime r=MarkMcCaskey a=MarkMcCaskey



Co-authored-by: Mark McCaskey <mark@wasmer.io>
2019-11-04 18:46:13 +00:00
Nick Lewycky
c0c7661c65 Merge branch 'master' of github.com:wasmerio/wasmer into feature/llvm-tbaa 2019-11-01 17:53:52 -07:00
Nick Lewycky
132757ee9d Fix leak. Only create one NamedMDNode for each name. 2019-11-01 17:49:45 -07:00
Mark McCaskey
8d95e637f2 Add probable fix of memory leak in trampoline code 2019-11-01 17:38:43 -07:00
bors[bot]
d8888c9459
Merge #911
911: Don't emit bounds checks when the offset is known at compile time to be less than the minimum memory size. r=nlewycky a=nlewycky



Co-authored-by: Nick Lewycky <nick@wasmer.io>
2019-11-01 19:53:17 +00:00
Nick Lewycky
20270411d9 When the const memory access is not larger than the minimum, use a runtime check.
The memory may have grown.
2019-11-01 12:49:54 -07:00
Nick Lewycky
ef4b3c3428 Improve some TBAA label names, particular for memory.
Memory can't change between static and dynamic, so use that in the TBAA label
name.

Distinguish between local and imported memory, table and globals.
2019-10-31 12:40:32 -07:00
nlewycky
0e665c4001
Merge branch 'master' into feature/llvm-tbaa 2019-10-31 11:55:31 -07:00
Nick Lewycky
0ba686ffc6 Improve wording a little. 2019-10-31 11:50:33 -07:00
Nick Lewycky
88427c9696 Add some comments. 2019-10-31 11:48:52 -07:00
Ivan Enderlin
2703d48098 Merge branch 'master' into feat-runtime-core-host-function-without-vmctx 2019-10-31 10:59:16 +01:00
bors[bot]
fb0615dc02
Merge #915
915: fix(runtime-core) Share the definition of `Trampoline` across all the backends r=Hywan a=Hywan

Extracted from https://github.com/wasmerio/wasmer/pull/882.

This patch updates all the backends to use the definition of
`Trampoline` as defined in the `wasmer_runtime_core::typed_func`
module. That way, there is no copy of that type, and as such, it is
easier to avoid regression (a simple `cargo check` does the job).

This patch also formats the `use` statements in the updated files.


Co-authored-by: Ivan Enderlin <ivan.enderlin@hoa-project.net>
2019-10-31 09:13:42 +00:00