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