Commit Graph

1139 Commits

Author SHA1 Message Date
970758dd69 Merge branch 'master' into feature/emscripten-for-bundling 2019-03-04 12:51:12 -08:00
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
deea9e98a4 Add import names, whoops. 2019-03-04 10:19:38 -08:00
bd7698e1f2 64-bit operators. 2019-03-05 00:59:05 +08:00
fa61b66516 Strongly type scratch registers and fixed an unwinding issue. 2019-03-05 00:23:49 +08:00
b3c60bce14 Merge branch 'master' into fix-clif-backend-module-new 2019-03-04 08:14:44 -08:00
71d7fe7d08 Merge branch 'master' into fix/c-api-fix-imports 2019-03-04 08:14:14 -08:00
4eb6ad238e lint 2019-03-04 08:11:36 -08:00
65100d19fc add __exit 2019-03-04 08:10:37 -08:00
00e3ec1446 add execvp 2019-03-04 08:10:37 -08:00
2ea9d0b09b add __syscall42 (pipe) 2019-03-04 08:10:37 -08:00
cf2909f5f3 add alternative assert function for emscripten 2019-03-04 08:10:37 -08:00
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
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
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
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
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
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
3f9dbca17f List specific supported features for validator. 2019-03-03 22:47:34 -08:00
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
ae3b2b2a42 Add bounds checking for memory accesses on dynamic memories 2019-03-03 21:56:30 -08:00
87c453a0ec Add check for table bounds on call_indirect. 2019-03-03 21:38:35 -08:00
801979c40d Add dynamic sigindices to the vm context. 2019-03-03 21:26:34 -08:00
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
c07298e58e Make capstone optional with a feature 2019-03-03 16:02:20 -06:00
aae256b407 Add tag to fix cast ptr lint error 2019-03-03 15:34:20 -06:00
3f345b41c2 Fix emscripten lib compilation 2019-03-03 15:18:16 -06:00
97a70327d0 Fix compilation of test example 2019-03-03 15:13:20 -06:00
2c765c87c5 Update locals reading to use count 2019-03-03 12:55:29 -06:00
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
2077fb448a Fix C API table/global/memory imports 2019-03-02 22:28:00 -06:00
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
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
57bfa9b0a4 Remove multiple throwing functions, just use one. 2019-03-02 14:16:02 -08:00
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
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
87ddf4f855 Add personality function.
- This is part of supporting exceptions in the future.
2019-03-02 10:20:18 -08:00
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
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
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
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
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
adfdf4d85d Merge branch 'master' into feature/add-c-api-module-import-descriptors 2019-03-01 12:50:35 -06:00
0792cc7018 Merge branch 'master' into feature/c-api-call-an-exported-func 2019-03-01 12:14:56 -06:00
aa75994e2f Add memory opcodes and test. 2019-03-02 01:41:31 +08:00
b80252e165 Setup the spectests lib to use llvm-backend 2019-02-28 23:02:03 -06:00
51c9091fc5 Start work on generating trampolines 2019-02-28 18:26:47 -08:00
6a20676fa9 Actually unmap the code after it's done being used 2019-02-28 17:20:18 -08:00
359ac5abec Connect part of the llvm backend to the runtime 2019-02-28 13:18:00 -08:00
d4ae5cdd40 Get function addresses from llvm-compiled code 2019-02-28 12:31:39 -08:00