Commit Graph

203 Commits

Author SHA1 Message Date
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
Brandon Fish
b80252e165 Setup the spectests lib to use llvm-backend 2019-02-28 23:02:03 -06: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
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
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
c5c967da00 Added parallel compilation (#209) 2019-02-25 12:03:48 -08:00
losfair
e9c0325784 Update dependencies 2019-02-24 00:51:47 +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
Lachlan Sneff
df03d00e74 Merge upstream/master into feature/llvm-feature 2019-02-22 14:14:46 -08:00
Lachlan Sneff
4042cff914 Change hashing algorithm from sha1 to meowhash 2019-02-22 13:02:28 -08:00
Mackenzie Clark
70ba4ec466
Merge branch 'master' into feature/benchmarks 2019-02-22 12:14:11 -08:00
Lachlan Sneff
17901f992a Add benchmark runner and nginx compile vs. load bench 2019-02-22 12:07:07 -08:00
Mackenzie Clark
a6d72bdec9
more emscripten stubs and urandom hack (#199) 2019-02-22 10:42:38 -08:00
Lachlan Sneff
696fd8fce3 Update api again and change SerializedCache to Artifact 2019-02-21 17:07:04 -08:00
Lachlan Sneff
2234f357b7
Merge branch 'master' into feature/cache-rework 2019-02-21 11:54:57 -08:00
Lachlan Sneff
7fa818ea06 Finalize new cache api 2019-02-21 11:47:28 -08:00
Brandon Fish
2ed6e82354 Merge branch 'master' into feature/c-api 2019-02-17 17:20:47 -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
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
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
6a1fdb7f91
add windows exception handling in C (#175) 2019-02-14 09:58:33 -08:00
losfair
8d8db4aa09 Starting integration. 2019-02-14 00:53:36 +08:00
Lachlan Sneff
5ee19e55a5 Add some branching instructions 2019-02-11 19:34:04 -08:00
losfair
af19f5c097 Update dependencies. 2019-02-12 00:51:26 +08:00
Lachlan Sneff
327e3a4a1a Implement many wasm instructions 2019-02-09 15:53:40 -08:00
Brandon Fish
c3707efa08 Update for merge from master 2019-02-09 13:09:54 -06:00
losfair
9649219578 Initial work on WebAssembly parser for Dynasm backend. 2019-02-08 23:56:14 +08:00
Lachlan Sneff
8d2c1956d7
Fix runtime error catching (#157) 2019-02-07 14:44:28 -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
Mackenzie Clark
4ab8bd69be
install errno on all platforms (#152) 2019-02-07 10:02:41 -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
Mackenzie Clark
7bd609fd58
memory fixes for windows (#138) 2019-02-05 16:07:55 -08:00
Syrus
9370588b86 Merge branch 'master' into fix/emscripten-translate 2019-01-31 14:00:00 -08:00
Brandon Fish
30caeb0810 Merge branch 'master' into fix/emscripten-translate 2019-01-29 23:07:32 -06:00
Brandon Fish
9f206399de Merge branch 'master' into feature/move-spectests-to-own-lib 2019-01-29 19:04:10 -06:00
Brandon Fish
3d62fc88ca Move spectests to their own library 2019-01-29 16:58:16 -06:00
Lachlan Sneff
5aa7d71ede
Merge branch 'master' into feature/improve-importing 2019-01-29 10:28:18 -08:00
Lachlan Sneff
19242a413f Get table imports working 2019-01-29 10:16:39 -08:00
Brandon Fish
2245c920ed Merge branch 'master' into fix/emscripten-translate 2019-01-27 13:21:44 -06: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
Syrus
4a8eacb370 Simplified storage of emscripten globals data 2019-01-24 16:45:06 -08:00
Syrus
788ba75982 Updated main Cargo witht he proper dependencies 2019-01-24 14:04:25 -08:00
Syrus
87d02d8399 Updated runtime and runtime-core versions 2019-01-24 13:45:25 -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
ab65477d1f
Refine the runtime api and document the exposed items (#115)
* private module, remove unused method, docs on compile_with

* refine runtime api and document exposed items

* Fix integration test build

* Fix lint
2019-01-23 12:34:15 -08:00
Lachlan Sneff
38b0fbf3c5
Generate trampolines to call exported functions instead of using libffi (#108)
* remove codegen.rs

* Add export trampolines and remove libffi

* Remove unused extern crates
2019-01-22 15:00:27 -08:00
Brandon Fish
74875ed554 Library restructure (#104)
* Move wasmer-runtime to wasmer-runtime-core

* Add the runtime library

* Fix issue with macros using wasmer_runtime, fmt

* Make default compiler dependency optional

* Add instantiate and validate functions
2019-01-22 11:02:06 -08:00
Lachlan Sneff
69fd93937c merge vm_refactor_trap_handling into vm_refactor 2019-01-21 13:53:33 -08:00
Lachlan Sneff
b74a08f097 Add (hopefully-working) support for windows 2019-01-21 11:51:41 -08:00
Lachlan Sneff
c18328aa4c support the start function 2019-01-18 14:53:46 -08:00
Brandon Fish
321abe6644 Merge branch 'feature/vm_refactor' into fix/vm_refactor_esmcripten_integration 2019-01-17 23:20:56 -06:00
Syrus
620f40c144 Make build and tests pass again by skipping emscripten 2019-01-17 17:44:33 -08:00
Steve Akinyemi
456a76a5e5 Fix emtest compilation issues 2019-01-18 01:25:05 +01:00
Steve Akinyemi
76f6d3c33c Fix emscripten imports 2019-01-17 23:19:14 +01:00
Syrus
de459fa5bd Isolated emscripten in new lib 2019-01-10 21:38:10 -08:00
Brandon Fish
c3a3461367 Use a cargo workspace 2019-01-09 20:06:33 -06:00
Brandon Fish
3e641d9f89 Updates to get wasmer crate compiling 2019-01-09 19:45:48 -06:00
Brandon Fish
14c9512cf4 Remove old src/runtime and src/compilers directories 2019-01-09 00:49:11 -06:00
Brandon Fish
696bc9a0a9 Merge branch 'master' into feature/vm_refactor 2018-12-28 15:15:24 -06:00
Brandon Fish
8d8f20a11c Merge branch 'master' into feature/add-emscripten-core-tests 2018-12-27 10:30:41 -06:00
Brandon Fish
8921385fbb Update emtests to glob for c/cpp files, use ignores.txt to exclude tests, disable cc out by default 2018-12-27 01:43:38 -06:00
Lachlan Sneff
3861fe98c6 Add typesafe wasm export calls 2018-12-26 20:42:23 -05:00
Mackenzie Clark
4813047d37 clock_gettime with time crate and test
more lint
2018-12-26 16:58:23 -08:00
Lachlan Sneff
e2a9bd4761
Merge branch 'master' into feature/vm_refactor 2018-12-26 15:51:14 -05:00
Lachlan Sneff
c06c65e7c6 Add preliminary support for imports 2018-12-24 23:05:04 -05:00
Brandon Fish
241f3d4091 Update to latest wasmparser version 2018-12-20 00:35:11 -06:00
Syrus
75046e0e2c Updated version to 0.1.4 2018-12-19 10:14:53 -08:00
Lachlan Sneff
5b920b7953 More backing work 2018-12-18 20:28:15 -05:00
Lachlan Sneff
93f8cdfc81
Update cranelift to 0.26.0. (#64)
* Initial additional modules

* Update to cranelift 0.26.0

* Fixed formatting
2018-12-17 21:30:27 -05:00
Mackenzie Clark
755f3ae690 upgrade to wabt-rs 0.7.2
includes a fix for windows builds, this brings wamer one step closer to windows support
2018-12-16 11:27:55 -08:00
Syrus
fd5554c3bd Refactored memory usage to use impl-abstract mmap 2018-12-14 17:32:35 -08:00
Syrus
bbb2f080cc Updated version to 0.1.3 2018-12-06 20:39:59 -08:00
Lachlan Sneff
bb34f4718e Add initial progress bar 2018-12-05 20:39:06 -05:00
Syrus Akbary
b781d33318 Updated version of wasmer to 0.1.2 2018-12-05 16:18:44 -08:00
Syrus Akbary
92a97d1dd4 Added emscripten _sysconf 2018-12-05 15:14:58 -08:00
Syrus Akbary
65b36eb6ba Trying to use latest version of nix 2018-11-28 13:57:59 -08:00
Lachlan Sneff
30d4688fe3 Runs up to socket/ioctl/sigaction functions 2018-11-26 22:48:19 -05:00
Lachlan Sneff
4015fb6193 Hack together enough emscripten stack stuff to make it happy 2018-11-25 23:56:21 -05:00
Syrus Akbary
f3833dc237 Merge branch 'master' into parallel-compilation
# Conflicts:
#	src/webassembly/instance.rs
2018-11-20 16:30:25 -08:00
Syrus Akbary
c141f8b64c Use local cranelift 2018-11-20 16:19:00 -08:00
Syrus Akbary
a9e46a02d3 Merge branch 'master' into cranelift-upgrade
# Conflicts:
#	Cargo.lock
#	Cargo.toml
#	src/webassembly/mod.rs
#	src/webassembly/module.rs
2018-11-15 19:40:45 -08:00
Syrus Akbary
2dcd25bebd Make wasmer work with stable Rust 2018-11-15 13:30:32 -08:00
Syrus Akbary
adf6d298b6 Trying to upgrade Cranelift to 0.23 2018-11-14 23:10:35 -08:00
Syrus Akbary
52614de22f Added signal handler to handle WebAssembly traps properly
Please read more about this here: https://github.com/CraneStation/wasmtime/issues/15
Code inspired by: 625a2b6c08
2018-11-06 11:15:40 +01:00
Syrus Akbary
1bc5664e5d Updated spin package 2018-11-05 18:58:57 +01:00
Syrus Akbary
380e5417d9 Removed unnecessary dependency libffi 2018-10-19 11:46:07 +02:00
Syrus Akbary
e97b47e147 Added ImportObject structure. Added integration tests 2018-10-17 16:08:51 +02:00
Syrus Akbary
1879a14938 All function calls are now working 2018-10-16 03:24:36 +02:00
Syrus Akbary
78cf7800e5 Added function compilation 2018-10-15 02:48:59 +02:00
Syrus Akbary
48fbc850ea Improved runnable options 2018-10-14 23:47:35 +02:00
Syrus Akbary
ac9edf39e6 Improved instance 2018-10-14 13:59:11 +02:00
Syrus Akbary
9bca6940b3 First working version of the interpreter 2018-10-11 21:29:36 +02:00