Commit Graph

1084 Commits

Author SHA1 Message Date
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
Ivan Enderlin
d709191be1 doc(runtime-c-api) Declare the example as C, so that they are not tested.
Those examples contain C code. They must not be run by `rustdoc` as
tests.
2019-03-06 12:08:02 +01:00
Ivan Enderlin
76caebebb4 fix(runtime-c-api) Provide a link target.
When compiling `wasmer-runtime-c-api` as a dependency of another
crate, `rustc` emits this warning:

```
warning: The package `wasmer_runtime_c_api` provides no linkable
target. The compiler might raise an error while compiling
`foo`. Consider adding 'dylib' or 'rlib' to key `crate-type` in
`wasmer_runtime_c_api`'s Cargo.toml. This warning might turn into a
hard error in the future.
```

To solve this issue, the `rlib` type has been added to the
`crate-type` list.
2019-03-06 11:02:14 +01:00
Ivan Enderlin
0f74133be3 feat(runtime-c-api) Build: Copy the C header files from OUT_DIR to CARGO_MANIFEST_DIR.
This patch copies the generated C and C++ header files from the
`OUT_DIR` to the root of the crate.
2019-03-06 10:58:40 +01:00
Ivan Enderlin
f2997357fc feat(runtime-c-api) Remove the flag WASM_EMSCRIPTEN_GENERATE_C_API_HEADERS.
This patch removes the `WASM_EMSCRIPTEN_GENERATE_C_API_HEADERS`
flag. Consequently, the C header files will be generated for each
build.

The `generate-c-api-headers` feature is also removed, since it becomes useless.
2019-03-06 10:42:32 +01:00
Ivan Enderlin
7c56d893c2 feat(runtime-c-api) Generate the C header file in OUT_DIR.
This patch changes the directory where the C header files are
generated, from `CARGO_MANIFEST_DIR` to `OUT_DIR`. The goal is: When
`wasm-runtime-c-api` is used as a dependency of another Rust project,
then the C header files are accessible in the `target/` directory
(i.e. the `OUT_DIR`).

Also, since `rustc` has a `--out-dir` directory, it increases the
flexibility of this approach: The user can generate the C header files
where she wants.
2019-03-06 10:42:06 +01:00
Brandon Fish
03909fe3c2 Run spectests with both compilers, activate using features 2019-03-06 00:15:07 -06:00
Lachlan Sneff
0e5d1172d6 Just install the signal handler once 2019-03-05 16:50:49 -08:00
Syrus Akbary
28bb264266
Merge pull request #232 from Hywan/fix-runtime-c-api-remove-warnings
fix(runtime-c-api) Fix several warnings
2019-03-05 16:38:14 -08:00
Lachlan Sneff
f36aade2e5 Fix broken test 2019-03-05 14:57:37 -08:00
Lachlan Sneff
48b36a3b01 Runs on linux and also hopefully ci 2019-03-05 14:54:44 -08:00
Lachlan Sneff
fa3ef2e88d Remove .llvmenv 2019-03-05 13:34:22 -08:00
Lachlan Sneff
276e5125b5 Filter out -fno-exceptions from llvm-config --cxxflags 2019-03-05 13:23:26 -08:00
Lachlan Sneff
c86c910054 Add partiality to float truncation 2019-03-05 11:50:56 -08:00
losfair
27b2061ffd Implemented missing integer operators and fixed division. 2019-03-06 01:16:24 +08:00
Ivan Enderlin
8ed340b6f1 fix(runtime-c-api) Update cbindgen.
When requiring `wasmer-runtime-c-api`, I get the following conflicts:

```
error: failed to select a version for `serde_derive`.
    ... required by package `cbindgen v0.7.1`
    ... which is depended on by `wasmer-runtime-c-api v0.2.1`
    ... which is depended on by `foo v0.1.0 (/private/tmp/foo)`
versions that meet the requirements `= 1.0.58` are: 1.0.58

all possible versions conflict with previously selected packages.

  previously selected package `serde_derive v1.0.89`
    ... which is depended on by `wasmer-runtime-core v0.2.1`
    ... which is depended on by `wasmer-runtime-c-api v0.2.1`
    ... which is depended on by `foo v0.1.0 (/private/tmp/foo)`

failed to select a version for `serde_derive` which could resolve this conflict
```

This issue resolves by updating `cbindgen` to 0.8.
2019-03-05 14:28:35 +01:00
Ivan Enderlin
25feef7384 chore(runtime-c-api) Regenerate the header files. 2019-03-05 10:07:08 +01:00
Ivan Enderlin
86c41264a3 chore(runtime-c-api) Fix CS. 2019-03-05 10:07:08 +01:00
Ivan Enderlin
59de57e075 fix(runtime-c-api) Fix Clippy notes.
This patch fixes warnings raised by Clippy.
2019-03-05 10:07:08 +01:00
Ivan Enderlin
053e5c40f4 fix(runtime-c-api) Avoid mutable bindings as much as possible.
This patch cleans several warnings where mutable bindings are declared
but used only as immutable bindings.

It's a little bit opinionated patch. I think it's interesting to use
`const` pointers as much as possible.
2019-03-05 10:07:08 +01:00
Ivan Enderlin
5ace3cfa2b fix(runtime-c-api) Remove unsafe blocks inside unsafe function.
This patch removes `unsafe { … }` blocks inside `unsafe` functions.

This patch also removes some warnings about camel case. All structures
with a C representation are automatically not mangle, and allow non
camel case.
2019-03-05 10:07:08 +01:00
Lachlan Sneff
f2b927bcd8 Remove debug print 2019-03-04 20:00:56 -08:00
Lachlan Sneff
fe8f8a0132 Add illegal arithmetic runtime error 2019-03-04 19:56:02 -08:00
Lachlan Sneff
3be7144892 Some cleanup 2019-03-04 17:37:05 -08:00
Lachlan Sneff
2969409ca7 Add hacky reinterpret instructions and pop used arguments off the value stack 2019-03-04 16:44:46 -08:00
Lachlan Sneff
25c0cef5f7 Up to 1242 passing spectests 2019-03-04 15:51:45 -08:00
Lachlan Sneff
7ef2c0dece Fix execute after free issue with llvm (and presumably cranelift?) 2019-03-04 14:41:56 -08:00
Mackenzie Clark
84c8be6b33
Merge branch 'master' into feature/emscripten-for-bundling 2019-03-04 13:16:01 -08:00
Lachlan Sneff
039ebdcf75 Fix merge errors and update llvm to use the new runtime error type. 2019-03-04 13:10:28 -08:00
Lachlan Sneff
4e198bca8b merge upstream/master into wasmer-private/feature/llvm-backend 2019-03-04 13:03:32 -08:00
Lachlan Sneff
65ec10961b
Change RuntimeError type (#234)
* Change RuntimeError type and fix codebase to use it

* Fix spectests to work with new runtime error type

* Fix windows signal handler in the clif-backend

* Add missing conversion

* final windows fix
2019-03-04 12:57:26 -08:00
Mackenzie Clark
970758dd69
Merge branch 'master' into feature/emscripten-for-bundling 2019-03-04 12:51:12 -08:00
Syrus Akbary
2d987982d6
Merge pull request #231 from Hywan/fix-clif-backend-module-new
fix(clif-backend) `Module::new` does not use its argument
2019-03-04 11:42:36 -08:00
Lachlan Sneff
deea9e98a4 Add import names, whoops. 2019-03-04 10:19:38 -08:00
losfair
bd7698e1f2 64-bit operators. 2019-03-05 00:59:05 +08:00
losfair
fa61b66516 Strongly type scratch registers and fixed an unwinding issue. 2019-03-05 00:23:49 +08:00
Mackenzie Clark
b3c60bce14
Merge branch 'master' into fix-clif-backend-module-new 2019-03-04 08:14:44 -08:00
Mackenzie Clark
71d7fe7d08
Merge branch 'master' into fix/c-api-fix-imports 2019-03-04 08:14:14 -08:00
Mackenzie Clark
4eb6ad238e lint 2019-03-04 08:11:36 -08:00
Mackenzie Clark
65100d19fc add __exit 2019-03-04 08:10:37 -08:00
Mackenzie Clark
00e3ec1446 add execvp 2019-03-04 08:10:37 -08:00
Mackenzie Clark
2ea9d0b09b add __syscall42 (pipe) 2019-03-04 08:10:37 -08:00
Mackenzie Clark
cf2909f5f3 add alternative assert function for emscripten 2019-03-04 08:10:37 -08:00
Syrus Akbary
ba8b7580ba
Merge pull request #230 from Hywan/fix-clif-backend-resolver-compiled-functions
fix(clif-backend) Remove an unused variable declaration
2019-03-04 08:10:11 -08:00
Syrus Akbary
436c4bffcb
Merge pull request #228 from Hywan/fix-runtime-core-unused-import
fix(runtime-core) Remove an unused import
2019-03-04 07:13:21 -08:00
Ivan Enderlin
5744f6896f fix(clif-backend) Module::new does not use its argument.
The `Module::new` method requires an argument (`wasm: &[u8]`) that is
never used.

This patch removes the argument, and updates the code accordingly.
2019-03-04 14:03:07 +01:00
Ivan Enderlin
42c9bdf8c2 fix(clif-backend) Remove an unused variable declaration.
The `compiled_functions` variable is declared twice. The first
declaration is never used. This patch removes it.
2019-03-04 13:59:37 +01:00
Ivan Enderlin
d9073c03c6 fix(runtime-core) hasher does not need to be mutable.
This patch updates the `hasher` variable. It is declared as mutable,
but it's never mutated.
2019-03-04 13:53:41 +01:00
Ivan Enderlin
ec4e476cc6 fix(runtime-core) Remove an unused import.
This patch removes an unused import, namely `crate::sys::Memory`.
2019-03-04 13:51:13 +01:00
Lachlan Sneff
3f9dbca17f List specific supported features for validator. 2019-03-03 22:47:34 -08:00
Lachlan Sneff
ab550f46fc Fix bug resulting from comparing the memory base instead of the memory offset to the memory bounds. 2019-03-03 22:11:40 -08:00
Lachlan Sneff
ae3b2b2a42 Add bounds checking for memory accesses on dynamic memories 2019-03-03 21:56:30 -08:00
Lachlan Sneff
87c453a0ec Add check for table bounds on call_indirect. 2019-03-03 21:38:35 -08:00
Lachlan Sneff
801979c40d Add dynamic sigindices to the vm context. 2019-03-03 21:26:34 -08:00
Lachlan Sneff
51cf9dde05 Move SSA value caches to the entry block.
The supporting framework around LLVM will make sure to only compute values once if they
are known to never change. Previously, these values were attempted to be reused from places where
the users may not dominate the creation of the value. To avoid that, they are always created
in the entry block now.
2019-03-03 21:13:37 -08:00
Brandon Fish
c07298e58e Make capstone optional with a feature 2019-03-03 16:02:20 -06:00
Brandon Fish
aae256b407 Add tag to fix cast ptr lint error 2019-03-03 15:34:20 -06:00
Brandon Fish
3f345b41c2 Fix emscripten lib compilation 2019-03-03 15:18:16 -06:00
Brandon Fish
97a70327d0 Fix compilation of test example 2019-03-03 15:13:20 -06:00
Brandon Fish
2c765c87c5 Update locals reading to use count 2019-03-03 12:55:29 -06:00
Lachlan Sneff
e362b56b07 Turns out we can just throw an exception from the signal handler
without any fancy tricks.

This has been tested on macos, hopefully it works on linux too.
2019-03-03 02:15:53 -08:00
Brandon Fish
2077fb448a Fix C API table/global/memory imports 2019-03-02 22:28:00 -06:00
Lachlan Sneff
9cfda6800f Try to return an error from call_protected when an exception occurs.
Something breaks pretty drastically sometimes, not sure why.
2019-03-02 19:08:15 -08:00
Lachlan Sneff
caf2205936 Add a signal handler for macos and linux.
Implementation Notes:
- To avoid setjmp, longjmp, and the mess that those create, we instead set the interrupting
    context of the signal handler to return into the `throw_trap` routine. To my surprise,
    this actually works. The stack ends up getting unwound normally and the memory-oob error
    is caught by the trampoline.
2019-03-02 17:00:05 -08:00
Lachlan Sneff
57bfa9b0a4 Remove multiple throwing functions, just use one. 2019-03-02 14:16:02 -08:00
Lachlan Sneff
9a90689b93 Add preliminary support for throwing and catching uncatchable exceptions.
Additional info:
- WebAssembly "traps" are uncatchable, but are still caught by the trampoline caller.
2019-03-02 12:57:35 -08:00
Lachlan Sneff
5760f6006a Start implementing exception handling by adding frame descriptor entry processing.
- Soon, we should be able basic exceptions.
2019-03-02 10:56:02 -08:00
Lachlan Sneff
87ddf4f855 Add personality function.
- This is part of supporting exceptions in the future.
2019-03-02 10:20:18 -08:00
Lachlan Sneff
a6fc06c908 Fix more compiling issues
Specifically:
- Don't truncate the list of local parameters.
- If the default destination in a br_table instruction is a loop, don't pop any results.
2019-03-02 10:04:44 -08:00
Lachlan Sneff
362e5aa160 Fix issue caused by dangling instruction.
- Come on inkwell, I thought you were better than this.
2019-03-01 20:28:27 -08:00
Lachlan Sneff
f0ac76517a Start running spectests
Additional info:
- Execution is turned off, this is just to make sure the backend can compile the entire specsuite.
- That being said, trampolines are implemented and protected call works (just doesn't protect).
2019-03-01 17:11:20 -08:00
Lachlan Sneff
3717c5720d Get control flow (at least according to the llvm verifier) working.
Next up:
- Importing vm intrinsics.
2019-03-01 15:48:43 -08:00
Mackenzie Clark
bde2022b58
fix appveyor installer and build (#224)
* remove exception handler when function returns or throws

* revert to only reserving and not committing memory due to issues

* appveyor builds for release, caches more, only publish artifact once
2019-03-01 13:16:32 -08:00
Brandon Fish
adfdf4d85d Merge branch 'master' into feature/add-c-api-module-import-descriptors 2019-03-01 12:50:35 -06:00
Brandon Fish
0792cc7018 Merge branch 'master' into feature/c-api-call-an-exported-func 2019-03-01 12:14:56 -06:00
losfair
aa75994e2f Add memory opcodes and test. 2019-03-02 01:41:31 +08:00
Brandon Fish
b80252e165 Setup the spectests lib to use llvm-backend 2019-02-28 23:02:03 -06:00
Lachlan Sneff
51c9091fc5 Start work on generating trampolines 2019-02-28 18:26:47 -08:00
Lachlan Sneff
6a20676fa9 Actually unmap the code after it's done being used 2019-02-28 17:20:18 -08:00
Lachlan Sneff
359ac5abec Connect part of the llvm backend to the runtime 2019-02-28 13:18:00 -08:00
Lachlan Sneff
d4ae5cdd40 Get function addresses from llvm-compiled code 2019-02-28 12:31:39 -08:00
losfair
e026adf33e Initial work on linear memory. 2019-02-28 23:58:02 +08:00
losfair
64142c4cb8 Reserve R15. 2019-02-28 23:22:21 +08:00
losfair
b7ca5e46ed Add Select opcode. 2019-02-28 23:12:42 +08:00
Brandon Fish
358d653b18
Merge branch 'master' into feature/add-c-api-module-export-descriptors 2019-02-27 23:21:23 -06:00
Brandon Fish
889fc3f432
Merge branch 'master' into feature/add-c-api-module-import-descriptors 2019-02-27 23:21:01 -06:00
Brandon Fish
02eac589f4 Merge branch 'master' into feature/c-api-call-an-exported-func 2019-02-27 23:19:50 -06:00
Lachlan Sneff
5d77769381 Hopefully finish the memory manager implementation for llvm RuntimeDyLd 2019-02-27 17:21:20 -08:00
Syrus
60f8f15db3 Updated version to 0.2.1 2019-02-27 17:20:49 -08:00
Mackenzie Clark
95062d524a
commit virtual memory before copying (#212) 2019-02-27 14:20:53 -08:00
Mackenzie Clark
ff5e1320da
Fix casting errors cause io issues (#222) 2019-02-27 13:54:28 -08:00
Mackenzie Clark
2a7a8c0069
newline in test-module-imports.c 2019-02-27 10:41:22 -08:00
Mackenzie Clark
c4566f0b39
Merge branch 'master' into feature/add-c-api-module-export-descriptors 2019-02-27 10:28:18 -08:00
losfair
d50f1cc95f If/Else. 2019-02-27 23:38:45 +08:00
Syrus Akbary
c7f3666354
Merge pull request #220 from wasmerio/feature/better-debug
Added debug build
2019-02-26 15:42:29 -08:00
Syrus
f7197bf456 Added debug build 2019-02-26 15:39:54 -08:00
losfair
3c3c5db2e1 Native trampolines. 2019-02-26 20:56:10 +08:00
Syrus
e6d0f91832 Use blake2b SIMD version for increased performance 2019-02-26 01:12:34 -08:00
Lachlan Sneff
4f833876e0 Start work on object loader using llvm's RuntimeDyld api. 2019-02-25 18:08:06 -08:00
Syrus
2d49d58665 Use blake2b (simd) version instead of blake2 2019-02-25 17:43:25 -08:00
Syrus
e7d08712b5 Use blake2 hashing algorithm 2019-02-25 17:37:33 -08:00
Syrus
53c8603464 Updated crates version to 0.2.0 2019-02-25 13:33:33 -08:00
Syrus Akbary
09fe82862e
Merge pull request #211 from wasmerio/fix/error-display
Fix/error display
2019-02-25 12:35:16 -08:00
Syrus
f9c0e0c078 Fix formatting 2019-02-25 12:25:28 -08:00
Mackenzie Clark
3cfdaf3891
Merge branch 'master' into feature/emscripten-getcwd 2019-02-25 12:18:30 -08:00
Syrus Akbary
c5c967da00 Added parallel compilation (#209) 2019-02-25 12:03:48 -08:00
losfair
9d8c5a5c70 Add a note on incorrect code generation. 2019-02-25 23:57:12 +08:00
losfair
530294922a Allow more registers to be used. 2019-02-25 23:55:27 +08:00
losfair
78fd995ad3 Fix argument passing at entry. 2019-02-25 23:38:33 +08:00
losfair
80812e3809 Implement native call & fix stack alignment. 2019-02-25 23:29:18 +08:00
losfair
2432a6c9b3 Fix function calls. 2019-02-25 22:47:27 +08:00
Brandon Fish
b008a054de Fix C API to allow calling an exported func 2019-02-24 12:22:24 -06:00
losfair
dbebdf937f Code generation for br_table. 2019-02-24 12:00:35 +08:00
Brandon Fish
1dfa106850 Add C API module import descriptors 2019-02-23 18:25:51 -06:00
Brandon Fish
17fe7bdaea Add C API module export descriptors 2019-02-23 15:41:38 -06:00
losfair
09cbd4aeb0 Changed to using custom calling conventions; Implemented direct calls. 2019-02-24 00:52:32 +08:00
losfair
e9c0325784 Update dependencies 2019-02-24 00:51:47 +08:00
Andrew Cann
ed706133c4 fix stack overflow in Error's Display impl 2019-02-23 17:00:03 +08:00
Mackenzie Clark
82eef13f41
Create a grow error and refactor grow impl to return result (#191) 2019-02-22 22:18:59 -08:00
Lachlan Sneff
2a913f5663 Implement table, partial call_indirect 2019-02-22 17:34:55 -08:00
Mackenzie Clark
0c4aea2d84
Merge branch 'master' into feature/emscripten-getcwd 2019-02-22 16:54:19 -08:00
Lachlan Sneff
07c8975304 Fix clif backend 2019-02-22 16:20:26 -08:00
Mackenzie Clark
7fb7529b48 cargo fmt 2019-02-22 15:16:07 -08:00
Mackenzie Clark
70e0b8cee1
Merge branch 'master' into feature/emscripten-getcwd 2019-02-22 15:15:26 -08:00
Mackenzie Clark
b5056d676a update wasm file 2019-02-22 15:07:55 -08:00
Mackenzie Clark
966be3ee8f right to the out buffer that was passed in syscall183 2019-02-22 14:54:01 -08:00
Lachlan Sneff
df03d00e74 Merge upstream/master into feature/llvm-feature 2019-02-22 14:14:46 -08:00
Lachlan Sneff
0c19824425 Fix after merge 2019-02-22 14:07:03 -08:00
Lachlan Sneff
d9506ca5d5
Merge branch 'master' into feature/benchmarks 2019-02-22 13:32:09 -08:00
Lachlan Sneff
4042cff914 Change hashing algorithm from sha1 to meowhash 2019-02-22 13:02:28 -08:00
Mackenzie Clark
0f9369c67d cargo fmt and better error message 2019-02-22 12:39:19 -08:00
Mackenzie Clark
ad3d361f76 add the syscall and create a test 2019-02-22 12:32:14 -08:00
Lachlan Sneff
687f70df89 Add validation benchmark 2019-02-22 12:31:41 -08:00
Syrus
16d62ace52 Fixed cache example (again) 2019-02-22 12:17:49 -08:00
Mackenzie Clark
70ba4ec466
Merge branch 'master' into feature/benchmarks 2019-02-22 12:14:11 -08:00
Lachlan Sneff
6d092dc121 Fix lint 2019-02-22 12:08:56 -08:00
Lachlan Sneff
17901f992a Add benchmark runner and nginx compile vs. load bench 2019-02-22 12:07:07 -08:00
Syrus
b3dd47bce8 Fixed runtime example 2019-02-22 12:06:22 -08:00
Syrus
84042cecb3 Fixed wrong syntax 2019-02-22 12:00:30 -08:00
Syrus
fdb2a67579 Added cache into standalone app 2019-02-22 11:42:36 -08:00
Brandon Fish
c9969f269c Use minimum limit as initial table size (#196) 2019-02-22 11:16:15 -08:00
Mackenzie Clark
a6d72bdec9
more emscripten stubs and urandom hack (#199) 2019-02-22 10:42:38 -08:00
Syrus Akbary
e9d72740c0
Merge pull request #197 from wasmerio/feature/c-api-module-instantiate
Add C API module_instantiate function
2019-02-22 09:58:49 -08:00
losfair
08a2ec82b3 Unary operators, comparison opcodes, loops, etc. 2019-02-23 01:54:16 +08:00
Lachlan Sneff
f1b190743b Change file.write to file.write_all 2019-02-21 17:11:28 -08:00
Lachlan Sneff
199cabd0af Add comment about serde feature 2019-02-21 17:09:32 -08:00
Lachlan Sneff
696fd8fce3 Update api again and change SerializedCache to Artifact 2019-02-21 17:07:04 -08:00
Lachlan Sneff
64eadad7fa Fix review comments 2019-02-21 15:31:20 -08:00
Lachlan Sneff
244308374c Fix formatting 2019-02-21 15:27:20 -08:00
Lachlan Sneff
f9d7d56195 Add documentation and make load safe 2019-02-21 14:00:33 -08:00
Lachlan Sneff
c78d4a8674 Fix test compilation 2 2019-02-21 12:55:03 -08:00
Lachlan Sneff
2234f357b7
Merge branch 'master' into feature/cache-rework 2019-02-21 11:54:57 -08:00
Lachlan Sneff
f18da0690e Fix test compilation 2019-02-21 11:54:39 -08:00
Lachlan Sneff
7fa818ea06 Finalize new cache api 2019-02-21 11:47:28 -08:00
losfair
7c439932f1 Block and conditional branch. 2019-02-21 22:04:43 +08:00
losfair
63b3f41f05 Handle unreachable and fix return. 2019-02-21 21:14:10 +08:00
losfair
6f97ebd5f7 Remove a hack in parser. 2019-02-21 21:12:58 +08:00
Brandon Fish
ac57a1bc71 Add C API module_instantiate function 2019-02-20 23:08:23 -06:00
Lachlan Sneff
336c1d9c5f Fix lint 2019-02-20 17:00:48 -08:00
Lachlan Sneff
9f40eedba8 Get caching working again 2019-02-20 16:41:41 -08:00
Mackenzie Clark
1a951a9abf
stub wasm32-unknown-emscripten target imports (#193) 2019-02-20 14:05:12 -08:00
Syrus Akbary
a418595f2f
Merge pull request #135 from wasmerio/feature/c-api
C API
2019-02-20 11:51:45 -08:00
Brandon Fish
b073145dbb Clone import in instantiate to prevent import move 2019-02-20 09:52:42 -06:00
losfair
aaabbf169c Operator::Br and control stack fixes 2019-02-20 23:21:33 +08:00
losfair
61c83507a4 Control frames, jumps & stack unwinding. 2019-02-20 22:56:32 +08:00
Jordan Danford
64519b1581 Fix formatting and grammar in documentation 2019-02-19 17:01:44 -07:00
Lachlan Sneff
82eea00a02 Saved 2019-02-19 15:36:22 -08:00
Lachlan Sneff
3c7dc200fa close to working 2019-02-19 09:58:01 -08:00
losfair
93d2713bde Operators. 2019-02-19 20:25:09 +08:00
losfair
5583e96d96 Mitigate a bug that causes incorrect code generation.
Still need to figure out why R8 and higher registers don't work.
2019-02-19 19:19:40 +08:00
Brandon Fish
d2f3023191 Allow specifying optional max value in limits 2019-02-19 00:05:08 -06:00
Brandon Fish
380d766943 Convert from Box into/from raw to pointer ref-deref to fix free issue 2019-02-18 23:30:08 -06:00
Lachlan Sneff
e381bbd07b Use ModuleInfo instead of ModuleInner when possible 2019-02-18 11:56:20 -08:00
Brandon Fish
2ed6e82354 Merge branch 'master' into feature/c-api 2019-02-17 17:20:47 -06:00
Brandon Fish
123d55cb4a Remove commented out code, cleanup build warnings 2019-02-17 17:10:15 -06:00
Brandon Fish
ee81560e06 Cleanup tests 2019-02-17 16:51:59 -06:00
Brandon Fish
a77d1be983 Remove unused API functions 2019-02-17 14:48:30 -06:00
Brandon Fish
36767e0bd6 Move ctx pointer to first parameter to fix test 2019-02-17 14:39:26 -06:00
Brandon Fish
7bb947aba7 Add func signature lookup functions 2019-02-17 14:12:05 -06:00
David McNeil
a9b1c6c85e Fix emscripten environment (#172)
Dynamically determine abortOnCannotGrowMemory and add
_emscripten_get_heap_size and _emscripten_resize_heap
2019-02-16 15:01:01 -07:00
Brandon Fish
56079ad589 Add compile Module function 2019-02-15 19:47:00 -06:00
Brandon Fish
9ee86138b9 Impl Error for CallError 2019-02-15 19:16:19 -06:00
Brandon Fish
768a2fae18 Merge branch 'master' into feature/c-api 2019-02-15 19:12:30 -06:00
Lachlan Sneff
108973dabe Start producing object files with llvm 2019-02-15 16:02:20 -08:00
Christopher Serr
cb29261ec7 Use repr(transparent) for single element structs (#187)
The ABI of aggregates such as single element structs is not required to
be the same as the single elements themselves. This is especially true
for f64 vs. #[repr(c)] struct F(f64); on Windows. Therefore the macro
has been tweaked so S1 uses repr(transparent) which is made for exactly
for this use case.

Closes #183
2019-02-15 15:11:06 -08:00
Mackenzie Clark
2d2d708500
Validate descriptor max on creating new table or memory (#186) 2019-02-15 13:14:42 -08:00
Mackenzie Clark
b68b109b7d
Implement error for remaining errors and the amalgamation error (#184) 2019-02-15 08:15:57 -08:00
Brandon Fish
3ebb80e50e Update imports and add func_new 2019-02-15 09:40:28 -06:00
Mackenzie Clark
39ef47ebb1
Implement Error for CompilerError (#181) 2019-02-14 21:08:35 -08:00
Mackenzie Clark
09ba27390c
Implement Error for Creation Error (#180) 2019-02-14 19:22:19 -08:00
Mackenzie Clark
6e87676160
Impl error for link error (#182) 2019-02-14 18:40:52 -08:00
Mackenzie Clark
24d028e2a2
impl error trait for ResolveError (#179) 2019-02-14 18:19:18 -08:00
Lachlan Sneff
73b4f7d337 Implement memory and global operations 2019-02-14 18:08:20 -08:00
Lachlan Sneff
2d87f64f82 Merge master into feature/llvm-backend 2019-02-14 15:47:28 -08:00
Lachlan Sneff
8827830aba implement load* and store* instructions 2019-02-14 15:13:58 -08:00
Mackenzie Clark
0c7532b1ba
remove unnecessary print statements (#177) 2019-02-14 11:11:35 -08:00
losfair
bb52a4e6eb Now we can run add! 2019-02-15 02:21:52 +08:00
losfair
1526d35872 Emit a Return opcode if the last one is not return. 2019-02-15 02:21:04 +08:00
Mackenzie Clark
6a1fdb7f91
add windows exception handling in C (#175) 2019-02-14 09:58:33 -08:00
Brandon Fish
bfd5e21605 Add export_name and export_func 2019-02-14 00:00:39 -06:00
Brandon Fish
93979aeae2 Add get exports from instance 2019-02-13 20:02:11 -06:00
losfair
8d8db4aa09 Starting integration. 2019-02-14 00:53:36 +08:00
losfair
7df7204e4b codegen: More opcodes 2019-02-14 00:53:06 +08:00
losfair
43df3dd546 Use System V calling convention and implement a few opcodes. 2019-02-13 20:04:10 +08:00
losfair
a69c5b4a14 stack: Helper functions and unified return types 2019-02-13 20:03:54 +08:00
Lachlan Sneff
2572a0259b Get control flow working (fingers crossed) 2019-02-12 18:02:00 -08:00
Syrus
b6416068a8 Use vec.push instead of .insert for vmctx arg 2019-02-12 11:17:09 -08:00
Syrus
b7c3cc09d1 Fixed typed func implementation 2019-02-12 11:14:20 -08:00
Syrus
44d1a0d1f9 Fixed debug function context position 2019-02-12 10:49:43 -08:00
Syrus
f52c4ce5cc Merge branch 'master' into feature/ctx-first-arg 2019-02-12 10:28:25 -08:00
Syrus
c40195cf77 Fixed spectests 2019-02-12 10:04:11 -08:00
losfair
4ebb22f8bc Calling conventions, value stack, and runtime stack layout. 2019-02-12 23:15:57 +08:00
Brandon Fish
7f5ca34138 Merge branch 'master' into feature/c-api 2019-02-11 23:17:26 -06:00
Brandon Fish
27cbfc0b0b Add documentation to API functions 2019-02-11 23:14:32 -06:00
Lachlan Sneff
5ee19e55a5 Add some branching instructions 2019-02-11 19:34:04 -08:00
Brandon Fish
34c45aee3d Update last error for every error result 2019-02-11 20:08:54 -06:00
Brandon Fish
019ef9ea01 Consolidate result type to one enum 2019-02-11 19:07:28 -06:00
losfair
2fbb5e3332 Codegen backend for x64. 2019-02-12 00:52:17 +08:00
losfair
ffc1bde3d8 Cleanup & add imports. 2019-02-12 00:52:01 +08:00
losfair
bbb27bedbe Code generation framework. 2019-02-12 00:51:49 +08:00
losfair
af19f5c097 Update dependencies. 2019-02-12 00:51:26 +08:00
losfair
f735471bac Merge remote-tracking branch 'private/master' into feature/dynasm-backend 2019-02-11 18:38:00 +08:00
Brandon Fish
b70e319f5c Add initial error messaging 2019-02-10 17:57:23 -06:00
Brandon Fish
66bf13c9dd Add memory data function 2019-02-10 15:20:35 -06:00
Brandon Fish
a502da58e3 Fix import object destroy 2019-02-10 14:27:08 -06:00
Brandon Fish
7ef472dae2 Add instance context memory 2019-02-10 14:24:36 -06:00
Brandon Fish
0cfe864fe6 Add Memory data length 2019-02-10 14:14:42 -06:00
Syrus
4311a37def Fixed simple spectests example compilation 2019-02-09 20:13:58 -08:00
Brandon Fish
2fa9cec0ed Add include guard 2019-02-09 18:07:05 -06:00
Lachlan Sneff
327e3a4a1a Implement many wasm instructions 2019-02-09 15:53:40 -08:00
Brandon Fish
a0288c87ac Add Memory Grow C API 2019-02-09 17:53:03 -06:00
Brandon Fish
94c5acedbf Add basic Global API 2019-02-09 17:39:15 -06:00
Syrus
227d5e24cf Moved ctx to first argument in Cranelift backend 2019-02-09 14:18:53 -08:00
Syrus
6c7fd55b87 Moved ctx to be the first argument in emscripten 2019-02-09 13:58:18 -08:00
Syrus
393b7dbdf3 Moved ctx in func macro to be first arg 2019-02-09 13:33:22 -08:00
Mackenzie Clark
4ef7dc339c
optimize imports (#170) 2019-02-09 13:31:28 -08:00
Brandon Fish
8364c39b4c Add Table grow function 2019-02-09 13:58:50 -06:00
Brandon Fish
4e5e525626 Add basic Table functions 2019-02-09 13:37:07 -06:00
Brandon Fish
c3707efa08 Update for merge from master 2019-02-09 13:09:54 -06:00
Brandon Fish
bda6451fb6 Merge branch 'master' into feature/c-api 2019-02-09 13:08:30 -06:00
Mackenzie Clark
e7c3b99ba9
add lua integration test (#109) 2019-02-08 17:47:51 -08:00
Lachlan Sneff
aa90a33501 Make module info store FuncSig, not Arc<FuncSig> 2019-02-08 14:19:58 -08:00
Mackenzie Clark
9a56680281
fix windows linking and appveyor build (#166) 2019-02-08 13:51:29 -08:00
Lachlan Sneff
1886b3d3c1
Naive short circuiting implementation for user panics and results. (#167)
* Add panic and result catching

* exit process on panic and user runtime error

* Complete initial implementation
2019-02-08 13:08:03 -08:00
Lachlan Sneff
4e1bc483a8
Fix emscripten setup, nginx works (#165)
* Fix emscripten setup, nginx works

* Remove commented-out code

* Re-enable nginx integration test
2019-02-08 10:55:32 -08:00
Mackenzie Clark
351b4feeeb implement with_size_protect (#163)
* implement with_size_protect

* no more conditional compilation
2019-02-08 10:32:20 -08:00
losfair
9649219578 Initial work on WebAssembly parser for Dynasm backend. 2019-02-08 23:56:14 +08:00
Mackenzie Clark
46ac4e9e1a
reorganize signal module and leave stubs in windows (#162) 2019-02-07 17:08:42 -08:00
Mackenzie Clark
9719781eee create platform mods for syscalls and stub for windows (#161)
* create platform mods for syscalls and stub for windows

* missing constants and duplicate use statements
2019-02-07 16:56:44 -08:00
Mackenzie Clark
f8e2b25137
consolidate shared functions and optimize use statements (#159) 2019-02-07 15:24:22 -08:00
Mackenzie Clark
25d438f346
create an alias for pid_t which does not exist on libc windows (#160) 2019-02-07 15:12:27 -08:00
Lachlan Sneff
8d2c1956d7
Fix runtime error catching (#157) 2019-02-07 14:44:28 -08:00
Mackenzie Clark
ea2bd80089
refactor getenv for windows (#156) 2019-02-07 14:23:13 -08:00
Brandon Fish
7574652bb1 Re-enable all passing emtests for CI 2019-02-07 14:55:06 -06:00
Syrus Akbary
1c1318623e
Merge pull request #155 from wasmerio/fix/signature-index-wrong-map
Fix signature index issue
2019-02-07 11:58:11 -08:00
Syrus
14806cb604 Fixed formatting and removed print debug statement 2019-02-07 11:37:15 -08:00
Mackenzie Clark
ce03e4464c fill unsetenv for windows (#150)
* fill unsetenv

* update usage of read_string_from_wasm

* convert helper to return String

* correct usage of helper fn, cargo fmt, and check in lock file change
2019-02-07 10:51:19 -08:00
Lachlan Sneff
dbea7b3abe
Merge branch 'master' into fix/signature-index-wrong-map 2019-02-07 10:46:35 -08:00
Lachlan Sneff
e147983ece fix 2019-02-07 10:45:48 -08:00
Mackenzie Clark
663de770bf
stub emscripten env calls for windows (#151) 2019-02-07 10:16:55 -08:00
Mackenzie Clark
4ab8bd69be
install errno on all platforms (#152) 2019-02-07 10:02:41 -08:00
Mackenzie Clark
bca702794c
assign to the protect enum (#153) 2019-02-07 09:04:57 -08:00
Mackenzie Clark
83df3ad35f
fix putenv and setenv for windows (#140) 2019-02-06 18:57:11 -08:00
Mackenzie Clark
ac286b708b
create the windows io mod and link printf (#144) 2019-02-06 17:56:01 -08:00
Mackenzie Clark
0a7b9b26b8
let the compiler deduce types in syscalls (#145) 2019-02-06 17:06:05 -08:00
Mackenzie Clark
f13a45a5bc
link time function and create alias for clockid_t (#146) 2019-02-06 16:40:02 -08:00
Lachlan Sneff
8fe9b7eac2
Add caching. (#134)
* Allow a module to have a different signature registry than the process-specific

* Add core ability to build compiled code caches

* Remove timing printouts

* Serialize/Deserialize memories to reduce copies

* Work more on api

* Relocate local functions relatively before external functions

* Fix incorrect definition in test

* merge errors caused by merge

* Fix emscripten compile

* Fix review comments
2019-02-06 16:26:45 -08:00
Lachlan Sneff
2f2f86a4de
Add feature flag to output debug information while running wasm (#147)
* Generate debug info during execution

* feature cfg debug output
2019-02-06 15:43:27 -08:00
Brandon Fish
2b55606d3c Add at_init emscripten_environ_constructor 2019-02-06 00:11:31 -06:00
Brandon Fish
b86acab3e4 Fix debug statement 2019-02-05 23:48:05 -06:00
Brandon Fish
3cd81d4119 Fix lua emscripten imports 2019-02-05 23:39:12 -06:00
Brandon Fish
9d16faab9d Make memalign optional if the wasm doesn't export it 2019-02-05 23:24:07 -06:00
Syrus Akbary
0f0e1d0aa5
Merge branch 'master' into feature/em-missing-imports 2019-02-05 17:30:38 -07:00
Mackenzie Clark
7bd609fd58
memory fixes for windows (#138) 2019-02-05 16:07:55 -08:00
Brandon Fish
c11f18b09c Update signatures and add missing imports 2019-02-05 17:25:51 -06:00
Lachlan Sneff
c10383c382 Fix example 2019-02-05 12:01:31 -08:00
Lachlan Sneff
271e68d88b Run fmt 2019-02-05 11:56:36 -08:00
Lachlan Sneff
308d9dde3f Fix compilation 2019-02-05 11:54:30 -08:00
Lachlan Sneff
cee248ae89 Update emscripten memory macro 2019-02-05 10:35:15 -08:00
Lachlan Sneff
8a8290b155 Add touch-ups to new memory api 2019-02-05 10:20:04 -08:00
Lachlan Sneff
f75006c062 Merge branch 'fix/emscripten-translate' of github.com:wasmerio/wasmer into fix/emscripten-translate 2019-02-04 23:08:46 -08:00
Lachlan Sneff
00db5410c5 Change memory access api again 2019-02-04 23:07:58 -08:00
Brandon Fish
309246e0d6 Add validate function and test 2019-02-05 00:01:01 -06:00
Brandon Fish
8d8dea7ec8 Implement basic C API memory functions 2019-02-04 21:46:47 -06:00
Brandon Fish
2defd27fac Also generate C++ bindings 2019-02-04 19:54:12 -06:00
Brandon Fish
6ed72a50ce Add instance_destroy back to test 2019-02-04 19:49:28 -06:00
Brandon Fish
1322446f04 Fix compilation 2019-02-04 18:46:10 -06:00
Mackenzie Clark
cc3c9b6df3
make spectests compile in emscripten update PR (#137) 2019-02-04 16:26:32 -08:00
Mackenzie Clark
ad9dff5fd0 use the fully qualified name for Ctx 2019-02-04 15:33:57 -08:00
Mackenzie Clark
765357e35d pass import object by reference in some spectests 2019-02-04 15:33:45 -08:00
Lachlan Sneff
563cda7ba2 Merge branch 'fix/emscripten-translate' of github.com:wasmerio/wasmer into fix/emscripten-translate 2019-02-04 15:08:10 -08:00
Lachlan Sneff
7fce447276 Change memory api 2019-02-04 15:07:32 -08:00
Mackenzie Clark
5f753f727c
Merge branch 'master' into fix/emscripten-translate 2019-02-04 15:05:43 -08:00
Mackenzie Clark
6a7c78d65a this name should match the function name 2019-02-04 15:01:43 -08:00
Mackenzie Clark
d231d404cb extern is no longer needed cause macro magic 2019-02-04 15:01:28 -08:00
Mackenzie Clark
73a8619bc5 do not need to dereference an enum 2019-02-04 15:01:12 -08:00
Mackenzie Clark
c771f2e677 fix more cases of passing imports by reference to instantiate 2019-02-04 15:00:57 -08:00
Mackenzie Clark
e688b374a6
fix some typos (#136) 2019-02-04 10:24:44 -08:00
Brandon Fish
fa959fa6ee Call cargo build during make test to build C API lib 2019-02-03 13:21:59 -06:00
Brandon Fish
358c306cea Add runtime-c-api as external project to build dependency 2019-02-03 12:33:42 -06:00
Brandon Fish
6185eb73a8 Configure cmake to find dylib/so/dll wasmer library 2019-02-03 12:14:14 -06:00
Brandon Fish
6f7db9062d Run cmake tests as part of a rust test 2019-02-02 20:16:53 -06:00
Brandon Fish
5d9e05c2f6 Add function signature parameters to set import func 2019-02-02 19:10:08 -06:00
Brandon Fish
d31c1c6068 Fix lints 2019-02-02 18:07:37 -06:00
Lachlan Sneff
dcc75b98ba Fix some tests 2019-02-02 16:02:28 -08:00
Lachlan Sneff
6a66ec3407 Merge branch 'fix/emscripten-translate' of github.com:wasmerio/wasmer into fix/emscripten-translate 2019-02-02 15:58:43 -08:00
Lachlan Sneff
ccd43df767 Instantiate takes reference 2019-02-02 15:58:33 -08:00
Brandon Fish
ffb3dc083a Add test to import function and call it 2019-02-02 17:43:59 -06:00
Lachlan Sneff
312d70e345
Merge branch 'master' into fix/emscripten-translate 2019-02-02 15:29:59 -08:00
Lachlan Sneff
eba66f3b33 Add typed functions and weird type parameter things 2019-02-02 15:28:50 -08:00
Brandon Fish
9120a9d1f8 Implement tagged enum for params/results 2019-02-02 14:53:07 -06:00
Brandon Fish
3633ab8ef4 Add parameters and results 2019-02-02 10:44:08 -06:00
Brandon Fish
3c7ad109bc Fix instance null ptr bug 2019-02-02 08:43:29 -06:00
Brandon Fish
be19e96669 Implementing instantiate and call 2019-02-02 00:26:10 -06:00
Brandon Fish
62f7bb607e Add first c test to test the C api 2019-02-01 22:10:36 -06:00
Brandon Fish
6f05146737 Use build script to run cbinden behind feature flag 2019-02-01 18:52:22 -06:00
Syrus
b1a7642773 Fixed immutable globals assertion 2019-02-01 14:00:07 -08:00
Syrus
6c33aa5803 Make emscripten compile again 2019-02-01 13:27:00 -08:00
Lachlan Sneff
ad1034b78c Fix lint 2019-02-01 13:22:49 -08:00
Lachlan Sneff
631fc8d124 Use WasmExternType for VarArgs 2019-02-01 13:18:43 -08:00
Lachlan Sneff
79c4566165 Merge branch 'fix/emscripten-translate' of github.com:wasmerio/wasmer into feature/better-type-support 2019-02-01 13:13:12 -08:00
Lachlan Sneff
c0a17f73bf Add wasm extern type trait 2019-02-01 13:10:59 -08:00
Brandon Fish
5ebea9672c Initial commit of C API library 2019-01-31 23:51:34 -06:00
Brandon Fish
54fdbf8813 Fix compilation error var name 2019-01-31 20:20:58 -06:00
Syrus
8725fef474 Adapted all emscripten import functions 2019-01-31 18:10:25 -08:00
Syrus
5066431422 Added more functions 2019-01-31 15:01:42 -08:00
Syrus
5f92fc5c8d Adapted more emscripten imports into new syntax 2019-01-31 14:48:29 -08:00
Syrus
9370588b86 Merge branch 'master' into fix/emscripten-translate 2019-01-31 14:00:00 -08:00
Brandon Fish
2540d5169b Update more imports to use imports! macro 2019-01-31 00:31:00 -06:00
Brandon Fish
909af1250f Convert em imports to imports! macro 2019-01-30 20:03:54 -06:00
Brandon Fish
9dcbea7408 Fix table/memory import 2019-01-30 19:19:53 -06:00
Brandon Fish
cf325f7cd6 Fixup/comment out to get things compiling 2019-01-29 23:08:03 -06:00
Brandon Fish
30caeb0810 Merge branch 'master' into fix/emscripten-translate 2019-01-29 23:07:32 -06:00
Brandon Fish
7872481e7e Merge branch 'master' into feature/move-spectests-to-own-lib 2019-01-29 20:34:24 -06:00
Brandon Fish
8a5d747026 Comment out em impl to fix compilation 2019-01-29 20:00:08 -06:00
Brandon Fish
9f206399de Merge branch 'master' into feature/move-spectests-to-own-lib 2019-01-29 19:04:10 -06:00
Lachlan Sneff
388ac1c8ae
Merge branch 'master' into fix/update-debug-macro 2019-01-29 15:58:51 -08:00
Lachlan Sneff
34d897b665 fix lint again 2019-01-29 15:53:07 -08:00
Lachlan Sneff
69e9c5154d Add Pages and Bytes newtypes 2019-01-29 15:44:15 -08:00
Brandon Fish
3d62fc88ca Move spectests to their own library 2019-01-29 16:58:16 -06:00
Lachlan Sneff
bc78738bb7 renaming 2019-01-29 14:15:59 -08:00
Lachlan Sneff
581363119b More review fixes 2019-01-29 13:04:42 -08:00
Lachlan Sneff
767fdbd950 Fix some reviewed items 2019-01-29 12:49:51 -08:00
Lachlan Sneff
d73c7015fb Change memory api a little 2019-01-29 12:12:37 -08:00
Lachlan Sneff
4c266c6fb9 Start transition of emscripten imports to new api 2019-01-29 11:41:43 -08:00
Lachlan Sneff
951daddca2 allow clippy lint aligned pointers 2019-01-29 10:31:44 -08:00
Lachlan Sneff
5aa7d71ede
Merge branch 'master' into feature/improve-importing 2019-01-29 10:28:18 -08:00
Lachlan Sneff
a60132344b Fix lint, reexport tables and globals 2019-01-29 10:25:56 -08:00
Lachlan Sneff
19242a413f Get table imports working 2019-01-29 10:16:39 -08:00
Brandon Fish
948e685dd6 Consolidate to single debug macro, activate using feature 2019-01-28 20:06:57 -06:00
Syrus
fe1846d180 Simplified EmscriptenGlobals initialization 2019-01-28 14:31:16 -08:00
Lachlan Sneff
98305c8731 Add new global import api 2019-01-28 11:55:44 -08:00
Lachlan Sneff
1be20b19e7 Add unused global type 2019-01-28 11:02:53 -08:00
Lachlan Sneff
9b491ec95d Fix memory api to be sound 2019-01-28 10:59:05 -08:00
Brandon Fish
23492a4c53 Remove unused code, cleanup 2019-01-27 19:06:03 -06:00
Brandon Fish
0bb45a69eb Ignore time_c and gmtime 2019-01-27 16:29:05 -06:00
Brandon Fish
2245c920ed Merge branch 'master' into fix/emscripten-translate 2019-01-27 13:21:44 -06:00
Brandon Fish
9cef5482ee Fix main argument handling 2019-01-27 12:18:58 -06:00
Brandon Fish
384c27c4e3 Fix unused variable warnings 2019-01-27 10:58:52 -06:00
Brandon Fish
6bbdaa1c53 Add addition em functions to run tests 2019-01-27 00:33:58 -06:00
Brandon Fish
12def9da25 Update imports for lua example 2019-01-26 17:02:51 -06:00
Brandon Fish
f273823abd Update main argument handling 2019-01-26 14:17:17 -06:00
Christopher Serr
d71ee5ad13 Import u64 correctly 2019-01-26 08:47:09 +01:00
Brandon Fish
ee911092ea Use memory min and max values from module to generate environment memory 2019-01-25 20:12:36 -06:00
Brandon Fish
1a1958a0ce Use table min and max values from module to generate environment table 2019-01-25 19:55:33 -06:00
Lachlan Sneff
a58f3318f0 Modify imports macro to work with all things that are exports 2019-01-25 16:40:07 -08:00
Lachlan Sneff
db3a20a76b reexport memory 2019-01-25 15:33:15 -08:00
Lachlan Sneff
e4686e67c4 Add importable memories and dynamic memories 2019-01-25 15:28:54 -08:00
Syrus
29a3af11fc Updated lib crate versions 2019-01-25 10:38:31 -08:00
Brandon Fish
65872a1be4 Cherry-picked fix 2019-01-25 10:23:26 -08:00
Brandon Fish
5209b5a558 Fix all the imports to run nginx 2019-01-24 23:58:54 -06:00
Syrus
25439b4df3 Removed unnecessary lifetime 2019-01-24 16:46:16 -08:00
Syrus
c22f1eee0f Simplified even more the global inits 2019-01-24 16:45:22 -08:00
Syrus
4a8eacb370 Simplified storage of emscripten globals data 2019-01-24 16:45:06 -08:00
Syrus
842105f7d9 Improved emscripten imported function arguments 2019-01-24 15:44:08 -08:00
Syrus
6d8465721f Improved formatting 2019-01-24 15:30:13 -08:00
Syrus
762405f6e9 Merge branch 'master' into fix/emscripten-translate
# Conflicts:
#	Cargo.lock
2019-01-24 14:05:44 -08:00
Syrus
136b68b6eb Added README to wasmer-runtime crate 2019-01-24 13:53:45 -08:00
Syrus
87d02d8399 Updated runtime and runtime-core versions 2019-01-24 13:45:25 -08:00
Syrus
3580a159a3 Updated wasm files 2019-01-24 13:41:59 -08:00
Syrus
fc1b255d40 Make emscripten work again 2019-01-24 13:04:12 -08:00
Lachlan Sneff
a20627964c
Improve runtime docs and add readme (#118)
* Add crate-level documentation

* add runtime readme

* Fix lint
2019-01-24 10:51:20 -08:00
Lachlan Sneff
e5c86e00ff
Remove use of debug macro (#117) 2019-01-24 09:46:28 -08:00
Syrus
c745d38a39 Make emscripten data functions optional 2019-01-24 00:11:12 -08:00
Brandon Fish
9970d2871b Add Debug impl for EmscriptenData 2019-01-24 00:17:43 -06:00
Brandon Fish
943fc3900a Addition build warning cleanup 2019-01-24 00:05:07 -06:00