bjorn3
3f6a3b5ebe
Implement lazy compilation in JIT mode
...
Lazy compilation has the potential to significantly improve the startup
time of a program. While functions have to be codegened when called, it
is expected that a significant amount of all code is only required when
an error occurs or only when the program is used in certain ways.
The basic approach is to first codegen a shim for each function. This
shim calls the `__cg_clif_jit` function of cg_clif with a pointer to the
`Instance` corresponding to the function for which it is a shim.
`__cg_clif_jit` function then codegens this function and uses the hot
code swapping support of SimpleJIT to redirect future calls to the
function to the real version. Finally it calls the newly codegened
function.
2020-12-25 12:08:21 +01:00
bjorn3
0b9b2532d2
Move finalize CodegenCx timer out of codegen mono items timer
2020-12-25 11:49:50 +01:00
bjorn3
20ffea6b8a
Change the way JIT mode is selected
2020-12-25 11:31:33 +01:00
bjorn3
c556e4dd35
Use PIC in JIT mode too
2020-12-25 10:55:11 +01:00
bjorn3
f8e22bfb1b
Update Cranelift
2020-12-12 10:37:10 +01:00
bjorn3
5f21ff20b3
Inline codegen_mono_item
2020-12-04 10:19:50 +01:00
bjorn3
db8fa0edfa
Inline codegen_mono_items and outline predefine_mono_items
2020-11-12 17:07:02 +01:00
bjorn3
6eaa502049
Update Cranelift for SimpleJIT changes
2020-11-12 11:56:09 +01:00
bjorn3
1a32c542ff
Update Cranelift
2020-11-09 18:16:08 +01:00
bjorn3
4cc6b4f9bf
Fix many clippy warnings
2020-10-28 21:47:25 +01:00
bjorn3
6e8ea1c049
Abort earlier when an error happens in jit mode
2020-10-11 11:31:36 +02:00
bjorn3
c352f91b40
Rustfmt
2020-10-09 19:17:52 +02:00
bjorn3
0a5968dfd2
Use the new cranelift-module interface
...
This updates Cranelift to include bytecodealliance/wasmtime#2249
2020-10-08 19:00:21 +02:00
bjorn3
426e55709c
Replace CG_CLIF_JIT with --jit
2020-09-29 18:41:59 +02:00
bjorn3
838dd17a67
Don't read CG_CLIF_JIT from init_global_lock
...
In preparation to moving away from an env var
2020-09-29 18:12:23 +02:00
bjorn3
b8b5a824a6
Fix JIT
2020-09-29 15:28:48 +02:00
bjorn3
c8699076f9
Document almost all modules
...
Fixes #1082
2020-09-23 15:13:49 +02:00
CohenArthur
4e685a512e
fmt: Run cargo fmt since it is available
2020-08-28 12:10:48 +02:00
CohenArthur
2a14fb7bf2
jit: Add NULL
as terminating argv
2020-08-22 11:24:02 +02:00
bjorn3
35701d8caa
Move global_asm into CodegenCx
2020-07-09 19:24:53 +02:00
bjorn3
037d411bf4
Implement global_asm! using an external assembler
...
Fixes #1061
2020-07-09 17:02:09 +02:00
bjorn3
eb8fd197ab
Prelude cleanup
2020-06-20 18:44:49 +02:00
bjorn3
5c6bf836fe
Implement #[link_section]
...
Fixes #1047
2020-06-20 12:01:24 +02:00
bjorn3
16b5dac463
Remove all non-tcx references from CodegenCx
2020-06-12 21:15:13 +02:00
bjorn3
ba7cdf21be
Emit unwind info for main and alloc shim
...
Fixes #988
2020-06-12 19:31:35 +02:00
bjorn3
1c76bdc53a
Remove already fixed FIXME in driver/jit.rs
2020-05-27 11:08:41 +02:00
bjorn3
020bcb31db
Register frame table in JIT mode
2020-05-01 20:58:27 +02:00
bjorn3
4da6488d95
Always emit .eh_frame section
2020-05-01 19:21:29 +02:00
bjorn3
e64a7ebcb0
Implement check mode
...
Fixes #973
2020-04-18 21:13:09 +02:00
bjorn3
291c75d10b
Enable the rust_2018_idioms and unused_lifetimes lints and fix all warnings
...
They are set to deny by default in the rust-lang/rust repo
2020-04-09 12:12:55 +02:00
bjorn3
13e3a3c8b0
Rustup to rustc 1.44.0-nightly ( 211365947
2020-03-30)
2020-03-31 13:20:19 +02:00
bjorn3
f288959c00
Limit publicness to crate where possible and remove unused imports
2020-03-27 12:14:45 +01:00
bjorn3
03240d89cc
Move jit code to driver/jit.rs
2020-03-12 11:44:27 +01:00