Commit Graph

769 Commits

Author SHA1 Message Date
Mackenzie Clark
d5f62b20aa refactor some imports in host fs 2019-03-21 11:00:49 -07:00
Mackenzie Clark
4eb9d3344b debug statements, move another fn into platform mod 2019-03-21 10:42:58 -07:00
Mackenzie Clark
630d4bde13 re-organize modules for syscalls, windows is in bad shape 2019-03-21 10:20:59 -07:00
Mackenzie Clark
9ed593d7b6 wip enchanced vfs 2019-03-21 08:55:57 -07:00
losfair
08ba696ab0 Fix vmctx offset tests. 2019-03-21 09:24:44 +08:00
losfair
26e4278657 Make the internal field private from outside. 2019-03-21 08:57:50 +08:00
losfair
a4ee873eae Merge remote-tracking branch 'origin/master' into feature/dynasm-backend 2019-03-21 08:42:34 +08:00
losfair
cb3846ff6a Add InternalCtx. 2019-03-21 08:39:06 +08:00
Mark McCaskey
c58a7e0c37 stub out/add the rest 2019-03-20 16:46:42 -07:00
Mark McCaskey
d13e4aa71f clean up a bit 2019-03-20 15:24:05 -07:00
Mark McCaskey
42b122d639 add many emscripten functions for PHP 2019-03-20 15:13:00 -07:00
Mark McCaskey
76b4cc79e8 fix make debug-release 2019-03-20 10:27:07 -07:00
losfair
395161acdc Merge remote-tracking branch 'origin/master' into feature/dynasm-backend 2019-03-20 19:54:29 +08:00
Lachlan Sneff
5657be1df0
Merge branch 'master' into add-versioning-to-cache 2019-03-19 16:22:55 -07:00
Mark McCaskey
cd9ef3c49a fix bugs and clean up path logic 2019-03-19 11:31:45 -07:00
Mark McCaskey
b1ef4ef0fa change output to go to OUT_DIR 2019-03-19 11:23:04 -07:00
Mark McCaskey
8e5f250ed0 generate the hash at compile time 2019-03-19 10:58:58 -07:00
losfair
01f18b2f43 Merge remote-tracking branch 'origin/master' into feature/dynasm-backend 2019-03-20 01:57:40 +08:00
losfair
295efbf3a9 Fix clippy errors. 2019-03-20 01:52:00 +08:00
Ivan Enderlin
c0f4b6a87c
Merge branch 'master' into feat-runtime-c-api-cache 2019-03-19 16:35:32 +01:00
Ivan Enderlin
57a82fa5cf fix(runtime-c-api) wasmer_serialized_module_from_bytes accepts bytes + length instead of wasmer_byte_array. 2019-03-19 16:24:59 +01:00
losfair
7ee364a58b Cargo fmt. 2019-03-19 21:31:23 +08:00
losfair
4256ccba92 Cleanup & fix need_check condition. 2019-03-19 21:30:26 +08:00
losfair
14da8abc23 Run-time memory bound checking. 2019-03-19 21:27:49 +08:00
losfair
a006a368c5 Cleanup. 2019-03-19 20:01:38 +08:00
Ivan Enderlin
44373aae94 feat(runtime-c-api) Mirrors the debug and llvm features.
`wasmer-runtime` has a `debug` and a `llvm` features. Let's mirror
them in `wasmer-runtime-c-api` so that the user can, for instance,
compile with the LLVM backend.
2019-03-19 11:12:19 +01:00
Ivan Enderlin
46edd20725 feat(runtime-c-api) Add the wasmer_serialized_module_from_bytes function.
This function is required to transform a `wasmer_byte_array` into a
`wasmer_serialized_module_t`. This is the complementary function of
`wasmer_serialized_module_bytes`.
2019-03-19 10:51:43 +01:00
Ivan Enderlin
5e31a1b6d1 feat(runtime-c-api) Introduce the wasmer_serialized_module_t struct type.
The `wasmer_module_serialize` function now computes a
`wasmer_serialized_module_t` value. The `wasmer_module_deserialize`
function takes this value as an input. Same for
`wasmer_serialized_module_destroy`.

The new function `wasmer_serialized_module_bytes` allows to read the
bytes inside the `wasmer_serialized_mdule_t` structure.
2019-03-19 10:04:31 +01:00
losfair
61abe70042 cargo fmt 2019-03-19 11:52:43 +08:00
losfair
ebaf2dc5a8 Make DynFunc::func_index private. 2019-03-19 11:52:27 +08:00
losfair
2ab2205d6b Allow cross-module indirect calls. 2019-03-19 11:47:38 +08:00
Mark
874b613f56 fmt it 2019-03-18 17:46:06 -07:00
Mark
2580871f63 update the binary too 2019-03-18 17:40:36 -07:00
Mark
a152b85729 Add versioning to cache 2019-03-18 17:27:23 -07:00
Ivan Enderlin
f049e9b0b3 fix(runtime-c-api) Remove explicity drop.
When the value goes out-of-scope, `drop` is called utomatically.
2019-03-18 16:09:02 +01:00
Ivan Enderlin
6f04f1ad88 Merge branch 'feat-runtime-c-api-cache' of github.com:Hywan/wasmer into feat-runtime-c-api-cache 2019-03-18 16:05:59 +01:00
Ivan Enderlin
6605a02316 feat(runtime-c-api) Add the wasmer_module_serialization_destroy function. 2019-03-18 16:05:04 +01:00
losfair
b06a49e1c0 Move wasmer-dynasm-backend out of default-compiler. 2019-03-18 16:22:57 +08:00
losfair
cd5c1456d7 Fix default compiler. 2019-03-18 16:15:48 +08:00
losfair
af8f307a92 Fix dependencies. 2019-03-18 16:14:11 +08:00
losfair
caa239a3df Make wasmer-dynasm-backend optional. 2019-03-18 16:06:20 +08:00
losfair
c5694ec527 Fix lint errors. 2019-03-18 00:53:07 +08:00
losfair
e48ff027a6 Remove commented out code. 2019-03-18 00:52:16 +08:00
losfair
4ca27b68b0 Manually fix lint errors. 2019-03-18 00:48:50 +08:00
losfair
6c40ea1cb5 Cargo fmt more files. 2019-03-18 00:35:55 +08:00
losfair
99faa79869 Run cargo fmt. 2019-03-18 00:31:36 +08:00
losfair
fcfde7352a Use R15 as temporary register. 2019-03-17 21:27:19 +08:00
losfair
08f4526b45 Merge remote-tracking branch 'origin/master' into feature/dynasm-backend 2019-03-17 21:14:01 +08:00
losfair
7394df2fd8 FIx floating point trunc's. 2019-03-17 19:54:20 +08:00
losfair
d8d39c309c Fix warnings. 2019-03-17 10:54:50 +08:00
losfair
f8fe999015 Implemented protected call and floating point traps; passing all spectests! 2019-03-17 10:27:14 +08:00
Mackenzie Clark
edacb0a8a7 Merge branch 'master' into feature/vfs 2019-03-16 13:38:02 -07:00
losfair
1f8c644855 Merge remote-tracking branch 'private/feature/dynasm-backend' into feature/dynasm-backend 2019-03-17 03:08:06 +08:00
losfair
81af8cfa9c Fixed several bugs in the single-pass backend and implemented a runtime resolver that allows to call managed functions with System V cc. 2019-03-17 03:07:27 +08:00
Syrus
53a8fca4d5 Make wasmer executable work with dynasm 2019-03-16 11:52:11 -07:00
Ivan Enderlin
212591b908
Merge branch 'master' into feat-runtime-c-api-cache 2019-03-16 14:10:44 +01:00
Mackenzie Clark
c46ff0dcfc
Merge branch 'master' into fix/windows-warnings-cargo-build 2019-03-15 14:20:34 -07:00
Mackenzie Clark
14104c2c8b fix lots of warnings
fix warnings
2019-03-15 14:10:17 -07:00
Ivan Enderlin
aac5c88b58 doc(runtime-c-api) Update the documentation of wasmer_module_deserialize. 2019-03-15 12:18:52 +01:00
Ivan Enderlin
082c93ceba chore(runtime-c-api) Fix a merging error. 2019-03-15 12:04:23 +01:00
Ivan Enderlin
2368ce3a20 chore(runtime-c-api) Regenerate the wasmer.hh? files. 2019-03-15 12:04:23 +01:00
Ivan Enderlin
c8872f1a6f test(runtime-c-api) Test the new wasmer_module_(de)?serialize functions.
This test suite compiles a module, then serializes it, deserializes
it, and continues by creating an instance and calling a function on
it. It allows to test the entire roundtrip.
2019-03-15 12:04:23 +01:00
Ivan Enderlin
f2760249b6 fix(runtime-c-api) Reorganize the tests by alphabetic order. 2019-03-15 12:04:23 +01:00
Ivan Enderlin
c142e16d12 feat(runtime-c-api) Implement the wasmer_module_(de)?serialize functions.
This patch implements 2 functions:

  1. `wasmer_module_serialize`, and
  2. `wasmer_module_deserialize`.
2019-03-15 12:04:23 +01:00
Ivan Enderlin
f57f8bc0cb fix(runtime-c-api) Use imported symbols.
`std::slice` is already imported. This patch then rewrites `::std::slice::` into `slice::`.
2019-03-15 12:04:23 +01:00
Ivan Enderlin
92ff24f5a2 feat(runtime) Make default_compiler public.
This is required to be able to deserialize a serialized module in
`runtime-c-api`.
2019-03-15 12:04:23 +01:00
Ivan Enderlin
2e45431876
Merge branch 'master' into fix-runtime-core-shared-memory-descriptor 2019-03-15 09:57:23 +01:00
Ivan Enderlin
61a203438a feat(runtime-core) SharedMemory.desc is not used… yet! 2019-03-15 09:09:24 +01:00
Mackenzie Clark
8fc2a13828 use the header 2019-03-14 13:34:52 -07:00
losfair
1b5ea9bece Passes all assert_return(_*) tests. 2019-03-15 01:10:31 +08:00
Ivan Enderlin
a98c1c87bf
Merge branch 'master' into feat-runtime-c-api-validate 2019-03-14 14:15:48 +01:00
Ivan Enderlin
5b98ee732c feat(runtime-c-api) wasmer_validate expects a *const uint8_t.
This patch updates the first argument of `wasmer_validate` from `*mut
uint8_t` to `*const uint8_t`. Indeed, the
`wasmer-runtime-core::validate` function doesn't expect a mutable
slice, so it's not required to expect a mutable array from C.

Also, it's likely for the Wasm bytes to be stored in the
`wasmer_byte_array` structure. The first field `bytes` is defined as
`*const uint8_t`. So this patch avoids a cast when writing a C++
program.
2019-03-14 12:33:40 +01:00
losfair
1104073641 Implemented more floating point operations. 2019-03-14 19:10:22 +08:00
losfair
4d2b6a0efe Add Copy + Clone for IfElseState 2019-03-14 17:11:48 +08:00
losfair
592c3fb938 Fixes and some floating point operations. 2019-03-14 17:11:35 +08:00
losfair
c76887d83c Merge remote-tracking branch 'private/feature/dynasm-backend' into feature/dynasm-backend 2019-03-14 10:31:48 +08:00
losfair
d80ea47ffc FIx bugs found with spectests. 2019-03-14 10:30:24 +08:00
Brandon Fish
e5d67c9705 Add dynasm feature to emscripten tests 2019-03-13 20:16:07 -05:00
losfair
179bbf9e41 Fix integer division. 2019-03-14 09:15:25 +08:00
Mackenzie Clark
93b602d8ea use "wasmer:fs" for custom section name and add unbundled test wasm 2019-03-13 15:24:48 -07:00
Mackenzie Clark
d95b62a467 fix cargo toml and fmt 2019-03-13 14:27:00 -07:00
Mackenzie Clark
bd697487aa Merge branch 'master' into feature/vfs 2019-03-13 14:25:14 -07:00
Mackenzie Clark
c1e0d325e3 switch to zbox 2019-03-13 14:23:55 -07:00
Lachlan Sneff
cd767bc1a7
Merge branch 'master' into fix/llvm-feature-flag 2019-03-13 12:22:21 -07:00
losfair
d4ded2cf07 Fix bugs found when running spectests. 2019-03-13 18:23:50 +08:00
Brandon Fish
68181acc74 Add dynasm to spectests 2019-03-12 21:14:50 -05:00
Brandon Fish
a5bab8cdf6 Updates to compile dynasm after merge from master 2019-03-12 20:59:10 -05:00
Brandon Fish
557be77338 Merge branch 'master' into feature/dynasm-backend 2019-03-12 20:58:22 -05:00
Brandon Fish
1fc7b31309 Add missing trait items to DynasmCompiler so that cargo build --all works 2019-03-12 19:39:10 -05:00
Mackenzie Clark
650125f338 fix build errors 2019-03-12 14:04:53 -07:00
Mackenzie Clark
9ff55a93ee Merge branch 'master' into feature/vfs 2019-03-12 14:02:06 -07:00
Ivan Enderlin
20d1023abe fix(emscripten) Various warning fixes and cleanups (#266)
* fix(emscripten) Remove unused imports.

This patch removes unused imports reported by `rustc` as warnings.

* fix(emscripten) Allow unreachable patterns in `_clock_gettime`.

The compiler thinks `CLOCK_MONOTONIC_COARSE` is unreachable, which is
not always the case. Add an attribute to allow unreachable patterns to
remove the warning.

* fix(emscripten) Rename unused variables.

This patch renames various unused variables by appending an underscore
to them.

* fix(emscripten) Declare `table` as immutable.

The `table` variable in `EmscriptenGlobals::new` was declared as
mutable, but it's never mutated.

* fix(emscripten) Remove an unnecessary `unsafe` block.

* fix(emscripten) Remove duplicate definition of `SO_NOSIGPIPE`.

The `SO_NOSIGPIPE` constant is defined in `syscalls/mod.rs` and
`syscalls/unix.rs`. It's never used in the first case. We can safely
remove it in this file, and keep it in `unix.rs`.

* fix(emscripten) `read_string_from_wasm` is used only on Windows.

Mark `read_string_from_wasm` as possible deadcode, since it's used
only on Windows.

* fix(emscripten) Remove `DYNAMICTOP_PTR_DIFF`, `stacktop`, `stack_max`,
`dynamic_base` and `dynamic_ptr`.

Four functions and one constant are used together but never used
inside or outside this file. They are deadcode.

* fix(emscripten) Remove `infinity` and `nan` fields of `EmscriptenGlobalsData`.

Those fields are never used.

* fix(emscripten) Allow non snake case in `emscripten_target.rs`.

Many functions in this file don't follow the snake case style for Rust
function names. The reason is that we want the names to match the
emscripten symbol names; even if a mapping is done in `lib.rs`, it's
easier to get the same names.

* fix(emscripten) Rename `STATIC_TOP` to `static_top`.

This variable is not a constant.
2019-03-12 14:00:33 -07:00
Mackenzie Clark
0c7808b1d3 reset a cargo manifests 2019-03-12 13:58:33 -07:00
Mackenzie Clark
f2488ac410 remove feature flag on custom sections 2019-03-12 13:36:11 -07:00
Mackenzie Clark
4cee16220b more edge cases 2019-03-12 13:04:14 -07:00
Mackenzie Clark
b5697d854a fix typos in vfs tests 2019-03-12 12:01:45 -07:00
Mackenzie Clark
f7f4fbf08a add the feature flag for llvm backend 2019-03-12 11:59:50 -07:00
Mackenzie Clark
76531b4fcb add readme for runtime abi 2019-03-12 10:57:47 -07:00
Mackenzie Clark
cc3f04efd7 expose vfs in emscripten and impl read syscall, feature flag 2019-03-12 10:48:47 -07:00
Mackenzie Clark
b9c3a49f3c parse and store custom sections from wasm, guarded by vfs feature flag 2019-03-12 10:45:44 -07:00
Mackenzie Clark
f014a05304 create runtime abi crate and vfs implementation 2019-03-12 10:40:52 -07:00
bors[bot]
d304bb4238 Merge #263 #265
263: fix(runtime-core) Remove unused imports r=Hywan a=Hywan

This patch removes unused imports as reported by `rustc` as warnings.

265: fix(clif-backend) Remove unused imports r=Hywan a=Hywan

This patch removes unused imports reported by `rustc` as warnings.

Co-authored-by: Ivan Enderlin <ivan.enderlin@hoa-project.net>
2019-03-12 13:09:26 +00:00
Ivan Enderlin
2c8fc5238d fix(clif-backend) Remove unused imports.
This patch removes unused imports reported by `rustc` as warnings.
2019-03-12 10:03:55 +01:00
Ivan Enderlin
6e62ea7cfb fix(runtime-core) Remove unused imports.
This patch removes unused imports as reported by `rustc` as warnings.
2019-03-12 09:51:54 +01:00
Ivan Enderlin
5db05fd609
Merge branch 'master' into feat-runtime-c-api-instance-context-data 2019-03-12 09:02:05 +01:00
Ivan Enderlin
9bcd59a4c4 Merge branch 'feat-runtime-c-api-instance-context-data' of github.com:Hywan/wasmer into feat-runtime-c-api-instance-context-data 2019-03-12 09:00:54 +01:00
Ivan Enderlin
a390a28384 fix(runtime-c-api) Fix Clippy errors. 2019-03-12 08:58:22 +01:00
losfair
683cb2090c Fix call_indirect. 2019-03-12 11:31:55 +08:00
Mackenzie Clark
033a2e71bd fix compiler error on windows 2019-03-11 10:25:45 -07:00
Syrus Akbary
87fb082993
Merge branch 'master' into fix-runtime-c-api-test-imports 2019-03-11 10:09:15 -07:00
Syrus Akbary
7242149b46
Merge branch 'master' into feat-runtime-c-api-instance-context-data 2019-03-11 10:09:02 -07:00
Mackenzie Clark
9c2a141d6e
Merge branch 'master' into fix/llvm-feature-flag 2019-03-11 10:05:10 -07:00
Syrus
e591cd0607 Use wasmerio fork of inkwell 2019-03-11 10:03:40 -07:00
Mackenzie Clark
ee55cd5e64 create an llvm flag 2019-03-11 09:58:09 -07:00
Ivan Enderlin
675f6817ba test(runtime-c-api) Free allocations.
Don't forget to free `context_data` :-).
2019-03-11 17:41:17 +01:00
Ivan Enderlin
170de02dd3 test(runtime-c-api) Test the wasmer_instance_context_data_* functions. 2019-03-11 17:34:13 +01:00
Ivan Enderlin
a11d454130 feat(runtime-c-api) Add an API to update vm::Ctx.data.
This patch adds 2 functions for the runtime C API, respectively
`wasmer_instance_context_data_set` and
`wasmer_instance_context_data_get`. The goal is to modify the
`vm::Ctx.data` field in the `runtime-core` library.

This is required to pass dynamic data to imported functions for
instance.
2019-03-11 16:50:18 +01:00
Ivan Enderlin
3fea07dc8a fix(runtime-c-api) Fix the imports length.
`imports` contains `func_import`, `global_import`, `memory_import` and
`table_import`, so 4 items. This patch updates the length of `imports`
when calling the `wasmer_instantiate` function.
2019-03-11 14:35:51 +01:00
Lachlan Sneff
17eada53f3
feat(runtime) Get ready for tiering (#257)
* Add local_function field to context

* Add local call indirection to llvm

* local call indirection

* Fix  vm test

* Fix cranelift local call indirection

* Fix unwinding on nightly
2019-03-08 15:15:16 -08:00
losfair
c5ef0a96e9 Update vm::Ctx. 2019-03-09 02:58:37 +08:00
losfair
25034ece07 Almost finished indirect calls. 2019-03-09 02:57:23 +08:00
losfair
3efccbe0f7 Support imported globals. 2019-03-09 00:38:13 +08:00
losfair
4c4743e7cd Globals. 2019-03-09 00:32:18 +08:00
losfair
258dea64d8 Fix calling imports. 2019-03-09 00:07:13 +08:00
Ivan Enderlin
a4454ebae8
doc(readme) Fix a typo.
This patch fixes a typo in the C example.
2019-03-08 13:26:04 +01:00
Brandon Fish
dd3a6ad21b Merge branch 'master' into feat-runtime-c-api-strict-c-cpp 2019-03-07 23:06:01 -06:00
Brandon Fish
628caf0a74 Make import_func_new/destroy not const 2019-03-07 22:59:11 -06:00
Syrus Akbary
60a74540d9
Update README.md 2019-03-07 20:39:58 -08:00
Syrus Akbary
b321ca339b
Update README.md 2019-03-07 20:39:44 -08:00
Syrus
4acb826bf2 Fixed default compiler on windows 2019-03-07 19:11:29 -08:00
Syrus
3a4325c5a3 Only use llvm in non windows envs 2019-03-07 18:26:29 -08:00
Syrus
671ff09e6a Use LLVM 5 for Windows 2019-03-07 18:06:47 -08:00
Lachlan Sneff
679fdc14c2
Merge branch 'master' into feature/llvm-backend 2019-03-07 13:25:24 -08:00
Syrus Akbary
6570bd433d
Fixed import func to be mutable 2019-03-07 10:19:03 -08:00
losfair
12c213739a Hack around calling imports. Not yet working. 2019-03-08 01:31:37 +08:00
Ivan Enderlin
7a9816ff12 feat(runtime-c-api) Ask rustc to generate a static library.
This is required to correctly link to the embedded runtime.
2019-03-07 10:19:02 +01:00
Ivan Enderlin
1dfae80c65 test(runtime-c-api) Fix compilation errors in test-exports.c. 2019-03-07 10:15:32 +01:00
Ivan Enderlin
725aff6fee test(runtime-c-api) Fix a compilation error in test-instantiate.c. 2019-03-07 10:15:32 +01:00
Ivan Enderlin
603f1fc57d test(runtime-c-api) Fix compilation errors in test-import-function.c. 2019-03-07 10:15:32 +01:00
Ivan Enderlin
2a0e42c1e5 test(runtime-c-api) Fix compilation errors in test-memory.c. 2019-03-07 10:15:32 +01:00
Ivan Enderlin
dcb4032e9d test(runtime-c-api) Fix compilation errors in test-imports.c. 2019-03-07 10:15:32 +01:00
Ivan Enderlin
c658224f0c test(runtime-c-api) Transforms all C/C++ warnings into errors.
This patch ensures that all our examples and tests do not generate
warnings. In C, it can be catastrophic sometimes…

Also, be sure that the `cmake` command doesn't emit any warnings too.
2019-03-07 10:15:32 +01:00
Brandon Fish
1957ddef53 Run emscripten tests with both compilers 2019-03-06 21:36:46 -06:00
Syrus Akbary
af9c26f4f9
Fixed links of wasmer runtime C api in crates.io and docs.rs 2019-03-06 18:22:16 -08:00
Syrus Akbary
49dc21363b
Merge pull request #242 from Hywan/doc-runtime-c-api
doc(runtime-c-api) Improve the `README.md`.
2019-03-06 17:28:02 -08:00
Lachlan Sneff
e3e91c628b
Merge branch 'master' into feature/llvm-backend 2019-03-06 13:47:15 -08:00
Mackenzie Clark
fd5916e493
Merge branch 'master' into feature/emscripten-for-bundling 2019-03-06 10:18:26 -08:00
Mackenzie Clark
b1739d93ec remove leading underscores from execvp and exit 2019-03-06 10:18:00 -08:00
Ivan Enderlin
bedb05738b
Merge branch 'master' into doc-runtime-c-api 2019-03-06 18:50:49 +01:00
Ivan Enderlin
f5ce1e8b60 doc(runtime-c-api) Improve the README.md.
This patch updates the `README.md` by adding badges, a Usage Section,
and a License Section. The Testing Section is slightly revamped.
2019-03-06 14:11:12 +01:00