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:
x86
32 / 64ARM
32 / 64RISC-V
32 / 64s390x
64PowerPC
32 / 64LoongArch
64MIPS
32 / 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