Commit Graph

114 Commits

Author SHA1 Message Date
00e4b25111 fix(llvm-backend) No need to enumerate items in this iterator. 2019-03-29 10:06:31 +01:00
20378de0e7 fix(llvm-backend) llvm_sig variable is not used here. 2019-03-29 10:06:11 +01:00
e3f39fc127 fix(llvm-backend) parse_function doesn't need a Module. 2019-03-29 10:05:39 +01:00
dea4705dcb fix(llvm-backend) LLVMBackend::new doesn't use instrinsics yet. 2019-03-29 10:04:56 +01:00
91f40639b7 fix(llvm-back) Mark WasmTrapType as deadcode.
This enum is not used directly by Rust, but used externally.
2019-03-29 10:04:09 +01:00
a1ca7069af fix(llvm-backend) Remove unused imports. 2019-03-29 10:03:40 +01:00
ddf532ddb5 fix(llvm-backend) Remove an example.rs file. 2019-03-29 09:43:21 +01:00
5294eb6b0d merge and respond to feedback 2019-03-28 11:41:45 -07:00
a0e20667b5 add small fix 2019-03-28 10:08:41 -07:00
c51d44578d simplify borrowing inference of compiler config in llvm backend 2019-03-27 14:25:29 -07:00
51c2111d53 pass compiler_config along to other backends 2019-03-27 14:18:34 -07:00
0c7808b1d3 reset a cargo manifests 2019-03-12 13:58:33 -07:00
f2488ac410 remove feature flag on custom sections 2019-03-12 13:36:11 -07:00
f7f4fbf08a add the feature flag for llvm backend 2019-03-12 11:59:50 -07:00
e591cd0607 Use wasmerio fork of inkwell 2019-03-11 10:03:40 -07:00
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
3a4325c5a3 Only use llvm in non windows envs 2019-03-07 18:26:29 -08:00
671ff09e6a Use LLVM 5 for Windows 2019-03-07 18:06:47 -08:00
0e5d1172d6 Just install the signal handler once 2019-03-05 16:50:49 -08:00
48b36a3b01 Runs on linux and also hopefully ci 2019-03-05 14:54:44 -08:00
fa3ef2e88d Remove .llvmenv 2019-03-05 13:34:22 -08:00
276e5125b5 Filter out -fno-exceptions from llvm-config --cxxflags 2019-03-05 13:23:26 -08:00
c86c910054 Add partiality to float truncation 2019-03-05 11:50:56 -08:00
f2b927bcd8 Remove debug print 2019-03-04 20:00:56 -08:00
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
039ebdcf75 Fix merge errors and update llvm to use the new runtime error type. 2019-03-04 13:10:28 -08:00
deea9e98a4 Add import names, whoops. 2019-03-04 10:19:38 -08: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
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
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
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