chc4

Results 27 issues of chc4

Right now we just use `/proc/self/exe` as the ELF to load to look for symbols. This is OK for normal Rust code, since it's statically linked by default, but not...

Related to #11, but we can also do the JIT compilation in *another thread*, and run the slow code while it's compiling in the background. This means that, in the...

Right now we just println a bunch, which sucks. - [ ] Switch to `tracing` so we have introspection into how long specific parts of the program are taking -...

```rust move |a: usize| { let val: usize; if Wrapping(a) + Wrapping(0x5) < Wrapping(a) { val = 1; } else { val = 2; } val } ``` ```asm ----...

There's a section in the README about the hypothetical freezing allocator we can use to make sure closure environments are safe to inline by forcing them to be immutable (at...

good first issue

What is says on the tin: ususally JITs can't ever deallocate JIT bodies without explicit safepoints, since another thread could be currently executing the code and would segfault. Since we...

good first issue

Currently we're a zero-pass JIT compiler: we just JIT operations as we see instructions, without any initial pass over the function. This is nice because it gives us nice performance...

Similar to #7, but loop instead. The problem with looping is we don't know where a loop starts until we hit jump to an instruction we have already marked in...

We optimally cache a lot of the JIT metadata we collect, for things like e.g. loop entry points from #8 or which control flows merge from #7 or DWARF abi...

Ok, maybe this is a dumb idea, but it'd be nice to be able to do a JIT compilation of a script and then have Lineiform dump a snapshot to...