mijit icon indicating copy to clipboard operation
mijit copied to clipboard

Experimental JIT compiler generator

Results 10 mijit issues
Sort by recently updated
recently updated
newest added

The one method `Jit::new_entry()` currently creates an entry point, an exit point, and a merge point with a specified register allocation. Consider separating it into three simple methods. In what...

enhancement
simplification

Apart from low-level code generation necessities such as scheduling and register allocation, I think peephole optimization will be the main technique for optimizing code, alongside rotations and simplifications of the...

In Mijit's domain-specific language (mod `code`), basic blocks end with a "switch" statement that decides where execution should go next. Currently this is rather _ad-hoc_, and I'd like to redesign...

enhancement
simplification

Mijit keeps a copy of the code it has compiled, in case it needs to specialize and recompile it. Currently, the code is stored as a tree of basic blocks,...

Profiling counters are needed to collect statistics about the behaviour of the program, and thereby to decide what specializations to compile. Specializations in turn add more profiling counters and collect...

This issue collects examples of bad code generated by Mijit, now or in the past. Each example has an explanation of how it arises. Keep this issue open as long...

history

For example, make a `Target` with very few registers.

Currently we optimize (poorly) for Skylake, no matter what we're compiling for.

enhancement

Currently, you have to use a special `Constant` instruction to put an immediate constant in a register, then use the register as an operand. This is not easy to lower...

enhancement

Add zero- and sign-extend instructions to `code::UnaryOp`, each parameterised by a Width. x86_64 has instructions for zero- or sign-extending a value loaded from memory. Add instructions for zero- or sign-extending...

enhancement