Nick Lewycky
2e68b04e24
Make this match return a CompileError instead of use unimplemented!.
2020-06-02 15:54:22 -07:00
Nick Lewycky
870f241fb7
cargo clippy
2020-06-02 15:46:18 -07:00
Nick Lewycky
a03a5e1775
Also make type_to_llvm_ptr return a CompileError instead of using unimplemented!.
2020-06-02 15:46:18 -07:00
Nick Lewycky
7bdd387474
Use blocktype_params_results in lieu of blocktype_to_types.
...
Remove read_info.rs entirely.
Add `to_compile_error` that converts a WasmResult into a Result<_, CompileError>, use it with `wptype_to_type`. This is a candidate for being moved into shared code.
Many functions had to change to deal with propagating CompileError.
2020-06-02 15:46:16 -07:00
Nick Lewycky
04f2db1b82
Export wptype_to_type from wasmer_compiler.
...
Also fix up its error message when it fails.
Use it in compiler-llvm and remove one of compiler-llvm's copies of this function.
2020-06-02 15:45:31 -07:00
Nick Lewycky
fa3242ce11
Fix bug updating phi nodes when branching up.
2020-06-02 15:44:39 -07:00
Nick Lewycky
c3d26ef639
Reset the value stack correctly when entering the 'else' side of an if-else.
2020-06-02 15:44:39 -07:00
Nick Lewycky
46159ee2a6
Fix value stack after return instruction in multi-value function.
2020-06-02 15:44:39 -07:00
Nick Lewycky
95c55ab40d
NFC. Pull this mapping into two mappings, I think it's nicer.
2020-06-02 15:44:39 -07:00
Nick Lewycky
f39a38779b
Update function prologue, epilogue and CFG instructions.
...
The function prologue now skips the sret argument if there is one.
The function epilogue packs values before return.
Br/BrIf/BrTable/Block/Loop/If/Else/End are updated to support multiple values.
As part of this, `read_info::blocktype_to_type` is removed. `blocktype_to_types` and `blocktype_to_param_types` take its place.
CtxType::func is updated to cache and return attributes. The allows the caller to place 'sret' on the call site, even though it's present on the FunctionValue. This helps some utility functions that check the callsite for presence of sret.
2020-06-02 15:44:39 -07:00
Nick Lewycky
ba8a6d6db6
Update trampoline code and use get_vmctx_ptr_param.
2020-06-02 15:44:39 -07:00
Nick Lewycky
83195a1498
Use abi::func_type_to_llvm when producing an LLVM function type from wasm types.
...
This renames `func_sig_to_llvm` to `func_type_to_llvm` and deletes the old version in intrinsics::. The new version returns a list of attributes along with the type. Update callers to set these attributes on the function or call site.
2020-06-02 15:44:39 -07:00
Nick Lewycky
e5ea5789ea
Use args_to_call and rets_from_call in both calls and indirect calls.
2020-06-02 15:44:39 -07:00
Nick Lewycky
2812a3330f
Use abi::args_to_call in indirect calls too.
2020-06-02 15:44:39 -07:00
Nick Lewycky
f762690dfb
Use abi::args_to_call when placing a direct call.
2020-06-02 15:44:39 -07:00
Nick Lewycky
4f9d8a5012
Initial commit of SysV ABI implementation.
2020-06-02 15:44:39 -07:00
Nick Lewycky
14188bed44
Revert "Ignore multi-value errors on LLVM too, for now."
...
This reverts commit 486dedc601 .
2020-06-02 15:44:39 -07:00
nlewycky
6e98f39568
Remove commented-out debugging cruft.
...
This was made obsolete by PR #79 .
2020-06-02 11:03:36 -07:00
Syrus Akbary
367dff887a
Update lib/compiler-llvm/src/config.rs
...
Co-authored-by: nlewycky <nick@wasmer.io >
2020-06-01 14:12:57 -07:00
Syrus Akbary
1b84525921
Update lib/compiler-llvm/src/trampoline/wasm.rs
...
Co-authored-by: nlewycky <nick@wasmer.io >
2020-06-01 14:12:50 -07:00
Syrus Akbary
903c1b23be
Update lib/compiler-llvm/src/translator/code.rs
...
Co-authored-by: nlewycky <nick@wasmer.io >
2020-06-01 14:12:44 -07:00
Syrus
18528fc251
Merge branch 'master' into llvm-callbacks
2020-06-01 13:55:36 -07:00
Syrus
2a9ce436f9
Added LLVM callbacks
2020-06-01 13:54:26 -07:00
Nick Lewycky
311b8d8d24
NFC. Borrow a str instead of a String. Pointed out by cargo clippy.
2020-06-01 11:04:13 -07:00
Syrus
abbd39c50b
Refactor trampoline compilation
2020-05-29 19:37:03 -07:00
Syrus
28c6462f76
Merge branch 'master' into llvm-dynamic-trampoline
2020-05-29 17:00:57 -07:00
Nick Lewycky
45e80dec7b
Add support for dynamic trampolines in compiler-llvm.
2020-05-29 16:56:41 -07:00
Nick Lewycky
d597a97aa1
Annotate atomicrmw and cmpxchg with volatile if needed.
2020-05-28 14:04:19 -07:00
Nick Lewycky
fd37486040
Update to a newer inkwell.
2020-05-28 14:04:19 -07:00
Syrus
17bca3cf8e
Use minor versions instead of patch
2020-05-27 17:42:47 -07:00
Nick Lewycky
fd64edf4c8
Return a FunctionCache instead of its members.
2020-05-27 16:28:00 -07:00
Nick Lewycky
fce259befa
Cache lookup of memory_grow and memory_size functions.
2020-05-27 14:55:46 -07:00
Nick Lewycky
d88e875e60
Cache function lookups.
2020-05-27 14:55:46 -07:00
Nick Lewycky
74355b0b03
NFC. Move looking up a function in the same wasm module to CtxType.
...
This is a straight refactor, this doesn't add caching yet.
2020-05-27 14:55:46 -07:00
Nick Lewycky
9eba8f798f
Implement all TODOs for TBAA labels.
2020-05-27 12:18:02 -07:00
nlewycky
a46a249b0c
Merge pull request #60 from wasmerio/llvm-dupe-type-code
...
Code cleanup. Remove reimplementation of type_to_llvm_ptr, use the one in intrinsics instead.
2020-05-26 15:49:00 -07:00
nlewycky
f1268a3b28
Merge pull request #59 from wasmerio/llvm-volatile-memaccess
...
Prevent loads and stores from being deleted.
2020-05-26 15:26:20 -07:00
Nick Lewycky
b035ebada2
Code cleanup. Remove reimplementation of type_to_llvm_ptr, use the one in intrinsics instead.
2020-05-26 15:22:24 -07:00
Nick Lewycky
bd8ffd6a17
Remove dead argument from CtxType::memory.
2020-05-26 14:59:59 -07:00
Nick Lewycky
7a1ac7b843
Don't mark loads and stores volatile when they're bounds checked at runtime.
2020-05-26 14:57:11 -07:00
Nick Lewycky
3d654d2c25
Add function that marks loads/store volatile. Static/dynamic condition is TODO.
...
Now that we apply three annotations to every user memory access, factor it out into a new function to apply them.
We do this for the load and stores, but not yet the atomicrmw's.
2020-05-26 14:57:11 -07:00
Nick Lewycky
2089c0a163
Support variable memory indices in the TBAA labelling too.
2020-05-26 14:57:11 -07:00
Nick Lewycky
07ec1fc004
Make memory_index a variable, we'll be reusing it soon.
2020-05-26 14:57:11 -07:00
Nick Lewycky
c82fe5fe8f
Add a MemoryIndex parameter to resolve_memory_ptr.
...
It's always zero today, but it won't always be.
2020-05-26 14:57:05 -07:00
Nick Lewycky
8a6f3beef5
memory_plans is a member, we don't need to pass it around.
2020-05-26 11:25:32 -07:00
Nick Lewycky
3c9c214b2c
Less editorializing.
2020-05-26 10:41:20 -07:00
Nick Lewycky
b81e241cdf
Add support for producing .o files as PIC.
...
We then can't handle the relocations in those .o files, but it's progress.
2020-05-26 10:41:13 -07:00
nlewycky
b7747ec9de
Merge branch 'master' into llvm-probestack
2020-05-26 09:40:33 -07:00
Ivan Enderlin
ea9eb29daf
Merge pull request #56 from wasmerio/feat-compiler-llvm-clean-up-comments
...
chore(compiler-llvm) Clean up comments
2020-05-25 21:49:57 +02:00
Ivan Enderlin
b5f0caf4be
chore(compiler-llvm) Clean up comments.
2020-05-25 21:15:02 +02:00