Commit Graph

2814 Commits

Author SHA1 Message Date
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
e026adf33e Initial work on linear memory. 2019-02-28 23:58:02 +08:00
64142c4cb8 Reserve R15. 2019-02-28 23:22:21 +08:00
b7ca5e46ed Add Select opcode. 2019-02-28 23:12:42 +08:00
358d653b18 Merge branch 'master' into feature/add-c-api-module-export-descriptors 2019-02-27 23:21:23 -06:00
889fc3f432 Merge branch 'master' into feature/add-c-api-module-import-descriptors 2019-02-27 23:21:01 -06:00
02eac589f4 Merge branch 'master' into feature/c-api-call-an-exported-func 2019-02-27 23:19:50 -06:00
5d77769381 Hopefully finish the memory manager implementation for llvm RuntimeDyLd 2019-02-27 17:21:20 -08:00
60f8f15db3 Updated version to 0.2.1 2019-02-27 17:20:49 -08:00
95062d524a commit virtual memory before copying (#212) 2019-02-27 14:20:53 -08:00
ff5e1320da Fix casting errors cause io issues (#222) 2019-02-27 13:54:28 -08:00
2a7a8c0069 newline in test-module-imports.c 2019-02-27 10:41:22 -08:00
c4566f0b39 Merge branch 'master' into feature/add-c-api-module-export-descriptors 2019-02-27 10:28:18 -08:00
d50f1cc95f If/Else. 2019-02-27 23:38:45 +08:00
c7f3666354 Merge pull request #220 from wasmerio/feature/better-debug
Added debug build
2019-02-26 15:42:29 -08:00
f7197bf456 Added debug build 2019-02-26 15:39:54 -08:00
3c3c5db2e1 Native trampolines. 2019-02-26 20:56:10 +08:00
e6d0f91832 Use blake2b SIMD version for increased performance 2019-02-26 01:12:34 -08:00
4f833876e0 Start work on object loader using llvm's RuntimeDyld api. 2019-02-25 18:08:06 -08:00
2d49d58665 Use blake2b (simd) version instead of blake2 2019-02-25 17:43:25 -08:00
e7d08712b5 Use blake2 hashing algorithm 2019-02-25 17:37:33 -08:00
53c8603464 Updated crates version to 0.2.0 2019-02-25 13:33:33 -08:00
09fe82862e Merge pull request #211 from wasmerio/fix/error-display
Fix/error display
2019-02-25 12:35:16 -08:00
f9c0e0c078 Fix formatting 2019-02-25 12:25:28 -08:00
3cfdaf3891 Merge branch 'master' into feature/emscripten-getcwd 2019-02-25 12:18:30 -08:00
c5c967da00 Added parallel compilation (#209) 2019-02-25 12:03:48 -08:00