Commit Graph

148 Commits

Author SHA1 Message Date
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
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