SLJIT is a low-level, platform-independent JIT compiler, which is very well suited for translating bytecode into machine code.
- Supports a variety of target architectures:
x8632 / 64ARM32 / 64RISC-V32 / 64s390x64PowerPC32 / 64LoongArch64MIPS32 / 64
- Supports a large number of operations
- Self-modifying code
- Tail calls
- Fast calls
- Byte order reverse (endianness switching)
- Unaligned memory accesses
- SIMD
- Atomic operations
- Allows direct access to registers (both integer and floating point)
- Supports stack space allocation for function local variables
- Supports all-in-one compilation
- Allows SLJIT's API to be completely hidden from external use
- Allows serializing the compiler into a byte buffer
- Useful for ahead-of-time (AOT) compilation
- Code generation can be resumed after deserialization (partial AOT compilation)
The primary source of documentation is sljitLir.h.
Additional documentation can be found on SLJIT's website, as well as in the docs folder.
Either open an issue or write an email to hzmester@freemail.hu.
SLJIT is licensed under the Simplified BSD License.
- Alexander Nasonov
- Carlo Marcelo Arenas Belón
- Christian Persch
- Daniel Richard G.
- Giuseppe D'Angelo
- H.J. Lu
- James Cowgill
- Jason Hood
- Jiong Wang (TileGX support)
- Marc Mutz
- Martin Storsjö
- Michael McConville
- Mingtao Zhou (LoongArch support)
- Walter Lee
- Wen Xichang
- YunQiang Su