fe8f8a0132
Add illegal arithmetic runtime error
2019-03-04 19:56:02 -08:00
3be7144892
Some cleanup
2019-03-04 17:37:05 -08:00
2969409ca7
Add hacky reinterpret instructions and pop used arguments off the value stack
2019-03-04 16:44:46 -08:00
25c0cef5f7
Up to 1242 passing spectests
2019-03-04 15:51:45 -08:00
7ef2c0dece
Fix execute after free issue with llvm (and presumably cranelift?)
2019-03-04 14:41:56 -08:00
84c8be6b33
Merge branch 'master' into feature/emscripten-for-bundling
2019-03-04 13:16:01 -08:00
039ebdcf75
Fix merge errors and update llvm to use the new runtime error type.
2019-03-04 13:10:28 -08:00
4e198bca8b
merge upstream/master into wasmer-private/feature/llvm-backend
2019-03-04 13:03:32 -08:00
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
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