rust/src
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
..
abi Make BoundRegion have a kind of BoungRegionKind 2020-12-18 15:27:28 -05:00
bin Change the way JIT mode is selected 2020-12-25 11:31:33 +01:00
debuginfo Use PIC in JIT mode too 2020-12-25 10:55:11 +01:00
driver Implement lazy compilation in JIT mode 2020-12-25 12:08:21 +01:00
intrinsics Remove implementation of intrinsics that are now lowered 2020-12-18 11:12:52 +01:00
optimize Optimize branches when the target is statically known to a jump 2020-12-09 19:55:11 +01:00
allocator.rs Merge commit '03f01bbe90' into update_cg_clif-2020-11-01 2020-11-03 11:00:04 +01:00
analyze.rs update cg_clif 2020-11-16 22:42:09 +01:00
archive.rs Merge commit '5988bbd24a' into sync_cg_clif-2020-11-27 2020-11-27 20:48:53 +01:00
atomic_shim.rs Merge commit '5988bbd24a' into sync_cg_clif-2020-11-27 2020-11-27 20:48:53 +01:00
backend.rs Use PIC in JIT mode too 2020-12-25 10:55:11 +01:00
base.rs Also emit vcode when emitting clif ir while using new style backends 2020-12-14 12:54:18 +01:00
cast.rs Merge commit '03f01bbe90' into update_cg_clif-2020-11-01 2020-11-03 11:00:04 +01:00
codegen_i128.rs Merge commit '03f01bbe90' into update_cg_clif-2020-11-01 2020-11-03 11:00:04 +01:00
common.rs Merge commit '5988bbd24a' into sync_cg_clif-2020-11-27 2020-11-27 20:48:53 +01:00
constant.rs Implement lazy compilation in JIT mode 2020-12-25 12:08:21 +01:00
discriminant.rs Merge commit '5988bbd24a' into sync_cg_clif-2020-11-27 2020-11-27 20:48:53 +01:00
inline_asm.rs Merge commit '03f01bbe90' into update_cg_clif-2020-11-01 2020-11-03 11:00:04 +01:00
lib.rs Implement lazy compilation in JIT mode 2020-12-25 12:08:21 +01:00
linkage.rs Merge commit '03f01bbe90' into update_cg_clif-2020-11-01 2020-11-03 11:00:04 +01:00
main_shim.rs update cg_clif 2020-11-16 22:42:09 +01:00
metadata.rs Collapse all uses of target.options.foo into target.foo 2020-11-08 17:29:13 +03:00
num.rs Merge commit '03f01bbe90' into update_cg_clif-2020-11-01 2020-11-03 11:00:04 +01:00
pointer.rs Use the new cranelift-module interface 2020-10-08 19:00:21 +02:00
pretty_clif.rs Use PIC in JIT mode too 2020-12-25 10:55:11 +01:00
toolchain.rs Collapse all uses of target.options.foo into target.foo 2020-11-08 17:29:13 +03:00
trap.rs Merge commit '5988bbd24a' into sync_cg_clif-2020-11-27 2020-11-27 20:48:53 +01:00
unsize.rs Use the new cranelift-module interface 2020-10-08 19:00:21 +02:00
value_and_place.rs Move binder for dyn to each list item 2020-12-11 15:02:46 -05:00
vtable.rs Implement lazy compilation in JIT mode 2020-12-25 12:08:21 +01:00