losfair
a3dcc0e240
Merge remote-tracking branch 'origin/master' into feature/osr
2019-07-04 23:56:45 +08:00
Nick Lewycky
adb257a40f
Reformat.
2019-07-01 16:15:13 -07:00
Nick Lewycky
9fc713f9b1
Update for new wasmparser.rs version.
2019-07-01 16:11:38 -07:00
losfair
650f67a339
Merge remote-tracking branch 'origin/master' into feature/osr
2019-07-01 21:15:35 +08:00
losfair
967027003d
Full preemptive snapshot/resume.
2019-06-27 15:49:43 +08:00
Nick Lewycky
70247a0c6e
Simplify construction of floating point constants.
2019-06-25 16:05:22 -07:00
Nick Lewycky
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
losfair
69944c1dc2
Fix ctx layout in LLVM.
2019-06-05 02:13:10 +08:00
Brandon Fish
66f9049a06
Reset LLVM related code to master
2019-06-02 19:36:26 -05:00
Brandon Fish
995ecefa92
Cargo fmt
2019-06-02 09:49:21 -05:00
losfair
8019505e65
Merge remote-tracking branch 'origin/feature/clif-cgapi' into feature/metering
2019-05-31 15:40:05 +08:00
losfair
b834b4ff36
Metering for LLVM.
2019-05-31 15:36:08 +08:00
Brandon Fish
8069cdac16
Merge branch 'master' into feature/clif-cgapi
2019-05-26 12:04:45 -05:00
Brandon Fish
6ca311f92d
Fix compilation errors and warnings
2019-05-26 11:13:37 -05:00
Brandon Fish
04d6ccc95c
Pass module info to FCG as Arc
2019-05-21 23:44:31 -05:00
Brandon Fish
e34e625009
Implement MCG.next_function in other backends
2019-05-19 11:45:16 -05:00
losfair
6aa87a0bbf
Add the internals
field and necessary structures for metering.
2019-05-17 01:10:21 +08:00
losfair
fac4c452c6
Fix LLVM backend.
2019-05-14 18:49:02 +08:00
Brandon Fish
2aefa731a6
Add deny for unreachable patterns and unused unsafe
2019-05-12 00:33:02 -05:00
Brandon Fish
85158ac22a
Add some initial deny for unused_imports and unused_variables
...
Additional unused variable fix on unix
Remove unused import on unix
Remove unused windows import
2019-05-11 09:23:25 -05:00
Brandon Fish
54095fcd67
Clean up commented out code in LLVM codegen
2019-05-07 22:53:48 -05:00
losfair
e53d5a91ca
Remove transmutes.
2019-05-07 19:20:18 +08:00
Brandon Fish
9c0cbc9775
Remove previous LLVM parser code
2019-05-06 23:41:31 -05:00
Brandon Fish
0926a5020e
Implement caching for parser refactor
2019-05-05 20:11:47 -05:00
Brandon Fish
4770277b15
Remove parser refactor commented out code, unused imports and fields
2019-05-05 14:28:40 -05:00
Brandon Fish
e1138a553b
Fix LLVM refactor unreachable depth
2019-05-05 13:56:02 -05:00
Brandon Fish
1864733ab8
Merge branch 'master' into feature/llvm-cgapi
2019-05-05 13:25:51 -05:00
Brandon Fish
60c0504bdf
Implement llvm returns in function code generator finalize
2019-05-04 12:07:21 -05:00
Brandon Fish
c5caf9b6db
Update LLVM FCG begin_body
2019-05-03 00:14:25 -05:00
Brandon Fish
b016ec6b34
Add start_of_code_block to function
2019-04-30 23:44:34 -05:00
Brandon Fish
0ee2ba0ee6
Implement more of next_function and finalize
2019-04-30 23:22:41 -05:00
Brandon Fish
ec253c73ab
Implement feed_local
2019-04-30 20:11:44 -05:00
losfair
21dd01c3aa
Fix LLVM backend compilation and segfaults.
2019-04-30 15:52:43 +08:00
Brandon Fish
01ba789eed
Cleanup some long literal lacking separators
2019-04-29 23:49:00 -05:00
Brandon Fish
53bebf9c73
Add initial progress to add LLVM to module refactor
2019-04-29 00:13:34 -05:00
Mackenzie Clark
9ab7199fe5
Merge branch 'master' into feature/cleanup-imports-unsafe
2019-04-24 08:37:06 -07:00
Lachlan Sneff
706ddabf61
Hook up error propagation
2019-04-22 15:06:40 -07:00
Brandon Fish
9e93565a49
Cleanup build warnings imports and unnecessary unsafe
2019-04-20 20:37:39 -05:00
Lachlan Sneff
087a826222
fix tests on more time uh huh
2019-04-19 14:09:41 -07:00
Lachlan Sneff
c3ef1f8421
Remove commented-out code
2019-04-19 14:00:03 -07:00
Lachlan Sneff
443663aa3f
Add caching support to llvm backend
2019-04-19 13:54:48 -07:00
Lachlan Sneff
4dd64ed72e
Remove UserTrapper trait
2019-04-18 10:00:15 -07:00
Lachlan Sneff
0d30c957a2
Fix llvm test
2019-04-12 10:33:30 -07:00
Lachlan Sneff
75cc65a8c5
Update llvm backend to new backend abstraction
2019-04-12 10:05:50 -07:00
Lachlan Sneff
60ac7a5b49
Remove unneeded semicolon
2019-04-11 12:13:36 -07:00
Lachlan Sneff
c898439817
Add well placed unwind(allowed) attribute
2019-04-11 12:07:54 -07:00
Lachlan Sneff
1cb3fbea0a
Add support for panicking/returning err back to llvm
2019-04-10 14:17:10 -07:00
Lachlan Sneff
cc656b26a9
Add implementations for typed func errors to cranelift and llvm
2019-04-09 17:09:33 -07:00
bors[bot]
593720dfc5
Merge #310
...
310: fix(llvm-lint) Clean up various warnings r=Hywan a=Hywan
These patches remove various warnings raised by `rustc`.
Only 2 warnings remain.
Co-authored-by: Ivan Enderlin <ivan.enderlin@hoa-project.net>
Co-authored-by: Mackenzie Clark <mackenzie.a.z.c@gmail.com>
2019-04-01 10:18:56 +00:00
Ivan Enderlin
8179dd6f96
fix(llvm-backend) Remove sign_type
from generate_trampoline
.
2019-03-29 10:09:56 +01:00
Ivan Enderlin
34b4f2fb11
fix(llvm-backend) Mark some variables as unused.
2019-03-29 10:09:39 +01:00
Ivan Enderlin
5cd45cbc28
fix(llvm-backend) Mark a variable as unused.
2019-03-29 10:09:10 +01:00
Ivan Enderlin
b03980f8c9
fix(llvm-backend) Remove unused variables or functions.
2019-03-29 10:08:43 +01:00
Ivan Enderlin
76d26d97ac
fix(llvm-backend) Remove Intrinsics.ctx_ty
, CtxType.ctx_ty, and
.ctx_ptr_ty`.
2019-03-29 10:07:38 +01:00
Ivan Enderlin
7645a812d9
fix(llvm-backend) Remove unused variables.
2019-03-29 10:07:08 +01:00
Ivan Enderlin
00e4b25111
fix(llvm-backend) No need to enumerate items in this iterator.
2019-03-29 10:06:31 +01:00
Ivan Enderlin
20378de0e7
fix(llvm-backend) llvm_sig
variable is not used here.
2019-03-29 10:06:11 +01:00
Ivan Enderlin
e3f39fc127
fix(llvm-backend) parse_function
doesn't need a Module
.
2019-03-29 10:05:39 +01:00
Ivan Enderlin
dea4705dcb
fix(llvm-backend) LLVMBackend::new
doesn't use instrinsics yet.
2019-03-29 10:04:56 +01:00
Ivan Enderlin
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
Ivan Enderlin
a1ca7069af
fix(llvm-backend) Remove unused imports.
2019-03-29 10:03:40 +01:00
Ivan Enderlin
ddf532ddb5
fix(llvm-backend) Remove an example.rs
file.
2019-03-29 09:43:21 +01:00
Mackenzie Clark
5294eb6b0d
merge and respond to feedback
2019-03-28 11:41:45 -07:00
Mark McCaskey
a0e20667b5
add small fix
2019-03-28 10:08:41 -07:00
Mark McCaskey
c51d44578d
simplify borrowing inference of compiler config in llvm backend
2019-03-27 14:25:29 -07:00
Mark McCaskey
51c2111d53
pass compiler_config along to other backends
2019-03-27 14:18:34 -07:00
Mackenzie Clark
f2488ac410
remove feature flag on custom sections
2019-03-12 13:36:11 -07:00
Mackenzie Clark
f7f4fbf08a
add the feature flag for llvm backend
2019-03-12 11:59:50 -07:00
Lachlan Sneff
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
Lachlan Sneff
0e5d1172d6
Just install the signal handler once
2019-03-05 16:50:49 -08:00
Lachlan Sneff
c86c910054
Add partiality to float truncation
2019-03-05 11:50:56 -08:00
Lachlan Sneff
f2b927bcd8
Remove debug print
2019-03-04 20:00:56 -08:00
Lachlan Sneff
fe8f8a0132
Add illegal arithmetic runtime error
2019-03-04 19:56:02 -08:00
Lachlan Sneff
3be7144892
Some cleanup
2019-03-04 17:37:05 -08:00
Lachlan Sneff
2969409ca7
Add hacky reinterpret instructions and pop used arguments off the value stack
2019-03-04 16:44:46 -08:00
Lachlan Sneff
25c0cef5f7
Up to 1242 passing spectests
2019-03-04 15:51:45 -08:00
Lachlan Sneff
7ef2c0dece
Fix execute after free issue with llvm (and presumably cranelift?)
2019-03-04 14:41:56 -08:00
Lachlan Sneff
039ebdcf75
Fix merge errors and update llvm to use the new runtime error type.
2019-03-04 13:10:28 -08:00
Lachlan Sneff
deea9e98a4
Add import names, whoops.
2019-03-04 10:19:38 -08:00
Lachlan Sneff
3f9dbca17f
List specific supported features for validator.
2019-03-03 22:47:34 -08:00
Lachlan Sneff
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
Lachlan Sneff
ae3b2b2a42
Add bounds checking for memory accesses on dynamic memories
2019-03-03 21:56:30 -08:00
Lachlan Sneff
87c453a0ec
Add check for table bounds on call_indirect.
2019-03-03 21:38:35 -08:00
Lachlan Sneff
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
Brandon Fish
c07298e58e
Make capstone optional with a feature
2019-03-03 16:02:20 -06:00
Brandon Fish
aae256b407
Add tag to fix cast ptr lint error
2019-03-03 15:34:20 -06:00
Brandon Fish
97a70327d0
Fix compilation of test example
2019-03-03 15:13:20 -06:00
Brandon Fish
2c765c87c5
Update locals reading to use count
2019-03-03 12:55:29 -06:00
Lachlan Sneff
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
Lachlan Sneff
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
Lachlan Sneff
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
Lachlan Sneff
57bfa9b0a4
Remove multiple throwing functions, just use one.
2019-03-02 14:16:02 -08:00
Lachlan Sneff
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
Lachlan Sneff
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
Lachlan Sneff
87ddf4f855
Add personality function.
...
- This is part of supporting exceptions in the future.
2019-03-02 10:20:18 -08:00
Lachlan Sneff
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
Lachlan Sneff
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
Lachlan Sneff
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
Lachlan Sneff
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
Lachlan Sneff
51c9091fc5
Start work on generating trampolines
2019-02-28 18:26:47 -08:00
Lachlan Sneff
6a20676fa9
Actually unmap the code after it's done being used
2019-02-28 17:20:18 -08:00
Lachlan Sneff
359ac5abec
Connect part of the llvm backend to the runtime
2019-02-28 13:18:00 -08:00
Lachlan Sneff
d4ae5cdd40
Get function addresses from llvm-compiled code
2019-02-28 12:31:39 -08:00
Lachlan Sneff
5d77769381
Hopefully finish the memory manager implementation for llvm RuntimeDyLd
2019-02-27 17:21:20 -08:00
Lachlan Sneff
4f833876e0
Start work on object loader using llvm's RuntimeDyld api.
2019-02-25 18:08:06 -08:00
Lachlan Sneff
2a913f5663
Implement table, partial call_indirect
2019-02-22 17:34:55 -08:00
Lachlan Sneff
108973dabe
Start producing object files with llvm
2019-02-15 16:02:20 -08:00
Lachlan Sneff
73b4f7d337
Implement memory and global operations
2019-02-14 18:08:20 -08:00
Lachlan Sneff
8827830aba
implement load* and store* instructions
2019-02-14 15:13:58 -08:00
Lachlan Sneff
2572a0259b
Get control flow working (fingers crossed)
2019-02-12 18:02:00 -08:00
Lachlan Sneff
5ee19e55a5
Add some branching instructions
2019-02-11 19:34:04 -08:00
Lachlan Sneff
327e3a4a1a
Implement many wasm instructions
2019-02-09 15:53:40 -08:00