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
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
Nick Lewycky
630be7733d
Add llvm 'readonly' attribute to calls of the memory size function.
...
In passing, delete a lot of dead code. Remove old VM intrinsics for memory.size, memory.grow and breakpoints.
2020-05-22 16:55:57 -07:00
Nick Lewycky
300c684742
Emit stack probes in LLVM.
2020-05-22 09:42:58 -07:00
Nick Lewycky
b97a7cb2fc
Implement missing error handling.
...
Expand acronym in comment.
2020-05-21 14:30:45 -07:00
Nick Lewycky
4d791d3e55
Rename mem_buf_slice to contents.
...
The callers are slicing a memory buffer, but that's not relevant to this function's API.
2020-05-21 13:56:05 -07:00
Nick Lewycky
c02cd76623
Refactor trampoline generation to use load_object_file.
2020-05-21 13:53:48 -07:00
Nick Lewycky
3764e7b9f8
Change load_object_file to take a RelocationTarget instead of a LocalFunctionIndex.
...
This removes its last connection to the implementation details of having a wasm_module, which we don't want to have to rely on when building trampolines.
There currently isn't a RelocationTarget for a trampoline function that refers to itself (none of been observed to done so yet), so we make the RelocationTarget optional.
2020-05-21 13:40:08 -07:00
Nick Lewycky
02f7e58c01
Change load_object_file to take a callback that converts symbol names into relocation targets.
...
This change means that load_object_file no longer needs a ModuleInfo, which trampoline generation doesn't have.
2020-05-21 13:32:03 -07:00
Nick Lewycky
a3a4a74596
Plain refactor the ELF loading to its own file. NFC.
2020-05-21 12:18:22 -07:00
Nick Lewycky
11cfe08919
Factor common string out to a constant.
2020-05-20 17:42:30 -07:00
Nick Lewycky
a47a3068f4
Remove #![allow(unused_imports, dead_code)] and fix resulting issues.
...
Fix nearly-all issues found by clippy too.
2020-05-20 17:18:23 -07:00
Nick Lewycky
dde6bc5269
Remove the C++ code.
...
This is replaced in reborn by the engines.
2020-05-20 15:41:11 -07:00
nlewycky
2c9ba69767
Merge pull request #40 from wasmerio/llvm-fcg-methods
...
Turn free functions into methods on LLVMFunctionCodeGenerator.
2020-05-20 14:45:09 -07:00
Nick Lewycky
c522e01165
Remove redundant close-and-reopen of impl block.
...
Move trap_if_misaligned up so it can join the impl block above it.
2020-05-20 14:18:34 -07:00
Nick Lewycky
1a22b5414e
The 'name' parameter was always "". Remove them.
2020-05-20 14:15:24 -07:00
Nick Lewycky
f2c781b3b2
Turn splat_vector into a method.
2020-05-20 14:12:00 -07:00
Nick Lewycky
9eb1392988
Turn apply_pending_canonicalization into a method.
2020-05-20 14:05:14 -07:00
Nick Lewycky
df527f2cf1
Turn trap_if_misaligned into a method.
2020-05-20 13:57:51 -07:00
Nick Lewycky
159b2938b9
Turn three trap_if_* functions into methods.
2020-05-20 13:52:12 -07:00
Nick Lewycky
7ea973f6a8
Turn v128_into_* into methods.
2020-05-20 13:43:42 -07:00
Nick Lewycky
ac5a6ce3f9
Rename the use of inkwell::targets::Target from LLVMTarget to InkwellTarget.
...
Makes it consistent with other renamed inkwell imports that are prefaced with 'Inkwell'.
2020-05-20 12:40:39 -07:00
losfair
32461a6938
Resolve review comments.
2020-05-21 00:53:41 +08:00
Syrus
3e76e2d1f1
Fixed comments
2020-05-19 22:08:48 -07:00
Syrus
bdb58903c0
Merge branch 'master' into simplify-vmctx
2020-05-19 22:05:08 -07:00
Syrus
c76a3d83db
Make LLVM work with one-vmctx imported functions
2020-05-19 21:38:10 -07:00
Nick Lewycky
fbd716374d
Make trunc_sat_scalar() a member of LLVMFunctionCodeGenerator.
2020-05-19 21:37:35 -07:00
Nick Lewycky
093f32c4b9
Make trunc_sat() a member of LLVMFunctionCodeGenerator.
2020-05-19 21:35:29 -07:00
Syrus
09e057338a
Renamed Module to ModuleInfo
2020-05-19 18:47:50 -07:00
Syrus Akbary
e7386373ff
Merge pull request #16 from wasmerio/native-engine
...
Native engine
2020-05-19 18:13:37 -07:00
Syrus
ae8dcfcb27
Make PIC optional for compilers
2020-05-19 16:56:56 -07:00
Nick Lewycky
c5696101f8
Simplify TBAA label to a string. If the caller wants to construct a complex one, they can do so. NFC.
2020-05-19 15:13:24 -07:00
Nick Lewycky
f8af586a6d
Remove dead code.
2020-05-19 15:02:04 -07:00
Nick Lewycky
063863eb87
Add a trap code for misaligned atomic accesses. Called "unaligned" because that's what the thread proposal spectest uses. Use it in LLVM.
2020-05-19 12:36:27 -07:00
Nick Lewycky
88bc330761
Remove commented-out code.
2020-05-19 11:52:34 -07:00
Nick Lewycky
808cf9eb0d
Remove obsolete comment and variables.
...
Expound upon comment. Fix typo.
2020-05-19 11:23:53 -07:00
Nick Lewycky
ae6f0dadb2
Stop naming instructions with numbered names.
...
LLVM will number instructions if you don't provide a name, so we get %7 instead of %s7 from calling state.var_name(). LLVM doesn't assign the numbers until printing out the LLVM IR as text, which we never do in a normal run of wasmer.
If you're editing a .ll text by hand and you're worried about messing up the numbering, use `opt --instnamer` to assign autogenerated names to all numbered instructions.
2020-05-19 09:54:20 -07:00
nlewycky
976493c756
Merge pull request #31 from wasmerio/llvm-memorydefinition-cache
...
Cache lookup of VMMemoryDefinition.
2020-05-18 20:03:48 -07:00
Nick Lewycky
0df99b5dbc
Cache lookup of VMMemoryDefinition.
...
To add to the cache, mutability is required, so now `resolve_memory_ptr` must be `&mut self` which means that `translate_operator` may not hold those convenient immutable references across the whole function.
The search and replace to implement the above changes affected some commented out code, that code is removed.
MemoryStyle grows PartialEq and Eq so that we can check what the memory style is without a match expression.
2020-05-18 19:59:50 -07:00
Syrus
363dbb3b08
Fixed lint issues
2020-05-18 14:55:55 -07:00
Nick Lewycky
dff7cf28c9
Fix invalid LLVM IR for global.get/set of imported globals.
...
In passing, refactor global accesses and cache the address computations and values of const globals.
Also includes some cargo fmt fixes.
2020-05-18 14:35:23 -07:00
Syrus
f20d09fb2d
Fixed LLVM compilation
2020-05-18 13:23:19 -07:00
Nick Lewycky
f666a394c5
Fix LLVM type of load of table entry.
2020-05-18 13:17:44 -07:00
Syrus Akbary
9981a51f8f
Merge pull request #23 from wasmerio/host-trampolines
...
Improved trampolines adding support for Dynamic functions
2020-05-18 13:12:37 -07:00
Nick Lewycky
7783879ae2
Improve comment.
2020-05-18 12:44:49 -07:00
Nick Lewycky
be1754766e
Fix issue with GOT relocations being emitted on Mac.
2020-05-18 12:30:49 -07:00
Nick Lewycky
288cb46715
Give the main loop a big comment explaining it.
...
Remove some commented out duplicate code.
2020-05-18 11:08:33 -07:00
Nick Lewycky
cac3246b2e
Improve error handling around ElfSectionIndex a little.
2020-05-18 10:56:44 -07:00