Commit Graph

41 Commits

Author SHA1 Message Date
2f3c9c3e2f Mark memory.size VM intrinsics as not modifying state, and throw.trap/breakpoint as functions which do not return. 2019-08-13 21:50:54 -07:00
536f9813dc Implement InternalEvent::Breakpoint in the llvm backend.
Enable now-working metering unit tests when run with the llvm backend.
2019-08-01 12:44:25 -07:00
0dfa1f68a8 Formatted code 2019-07-31 23:51:12 -07:00
a6461c3b14 Removed explicit hashbrown dependency 2019-07-31 23:18:38 -07:00
931d556de1 Add support for internal fields. 2019-07-31 13:10:51 -07:00
bdb1c4c44e Fix inkwell assertion due to treating vector as float. Fix llvm backend fatal error due to missing support for fminimum/fmaximum. 2019-07-30 14:59:04 -07:00
cd25356858 Fix shuffle and enable tests. Add support for new load_splat instructions.
Updates to wasmparser 0.34.0 and picks up a newer wasmerio/wabt.
2019-07-19 15:19:58 -07:00
fdc13563b8 Initial implementation of SIMD in the LLVM backend. 2019-07-10 13:54:32 -07:00
77afcea9dc Add V128 stubs to allow LLVM backend to build again. 2019-07-10 13:48:12 -07:00
0a1bdd449e Update to @llvm.minimum/@llvm.maximum which requires LLVM 8.
The @llvm.minnum/@llvm.maxnum intrinsics don't produce correct (for wasm) outputs in all cases.
2019-07-10 13:48:12 -07:00
650f67a339 Merge remote-tracking branch 'origin/master' into feature/osr 2019-07-01 21:15:35 +08:00
967027003d Full preemptive snapshot/resume. 2019-06-27 15:49:43 +08:00
55394b4f06 Void type in llvm may only be used as a function return type. You may not form a pointer to void or use it as a structure member.
Fixes assertion failure initializing llvm backend.
2019-06-25 16:05:22 -07:00
69944c1dc2 Fix ctx layout in LLVM. 2019-06-05 02:13:10 +08:00
66f9049a06 Reset LLVM related code to master 2019-06-02 19:36:26 -05:00
995ecefa92 Cargo fmt 2019-06-02 09:49:21 -05:00
b834b4ff36 Metering for LLVM. 2019-05-31 15:36:08 +08:00
6aa87a0bbf Add the internals field and necessary structures for metering. 2019-05-17 01:10:21 +08:00
fac4c452c6 Fix LLVM backend. 2019-05-14 18:49:02 +08:00
e53d5a91ca Remove transmutes. 2019-05-07 19:20:18 +08:00
b03980f8c9 fix(llvm-backend) Remove unused variables or functions. 2019-03-29 10:08:43 +01:00
76d26d97ac fix(llvm-backend) Remove Intrinsics.ctx_ty, CtxType.ctx_ty, and .ctx_ptr_ty`. 2019-03-29 10:07:38 +01:00
a1ca7069af fix(llvm-backend) Remove unused imports. 2019-03-29 10:03:40 +01: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
fe8f8a0132 Add illegal arithmetic runtime error 2019-03-04 19:56:02 -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
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
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
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
4f833876e0 Start work on object loader using llvm's RuntimeDyld api. 2019-02-25 18:08:06 -08:00
2a913f5663 Implement table, partial call_indirect 2019-02-22 17:34:55 -08:00
73b4f7d337 Implement memory and global operations 2019-02-14 18:08:20 -08:00
8827830aba implement load* and store* instructions 2019-02-14 15:13:58 -08:00
2572a0259b Get control flow working (fingers crossed) 2019-02-12 18:02:00 -08:00
5ee19e55a5 Add some branching instructions 2019-02-11 19:34:04 -08:00
327e3a4a1a Implement many wasm instructions 2019-02-09 15:53:40 -08:00