mirror of
https://github.com/zherczeg/sljit.git
synced 2025-12-06 00:04:36 +00:00
Platform independent low-level JIT compiler
|
Some checks failed
Actions / Build and test on loongarch64 (push) Has been cancelled
Actions / Build and test on aarch64 (push) Has been cancelled
Actions / Build and test on armt2 (push) Has been cancelled
Actions / Build and test on armv7 (push) Has been cancelled
Actions / Build and test on riscv32 (push) Has been cancelled
Actions / Build and test on riscv32 with extensions (push) Has been cancelled
Actions / Build and test on riscv64 (push) Has been cancelled
Actions / Build and test on riscv64 with extensions (push) Has been cancelled
Actions / Build and test on s390x (push) Has been cancelled
Actions / Build and test on x86 (push) Has been cancelled
Actions / Build and test on x64 (push) Has been cancelled
Some applications (ex: PCRE2) expect to use a fixed buffer that might be too short otherwise. |
||
|---|---|---|
| .github/workflows | ||
| docs | ||
| regex_src | ||
| sljit_src | ||
| test_src | ||
| .gitignore | ||
| API_CHANGES | ||
| CMakeLists.txt | ||
| GNUmakefile | ||
| INTERNAL_CHANGES | ||
| LICENSE | ||
| README.md | ||
Purpose
SLJIT is a low-level, platform-independent JIT compiler, which is very well suited for translating bytecode into machine code.
Features
- 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)
Documentation
The primary source of documentation is sljitLir.h.
Additional documentation can be found on SLJIT's website, as well as in the docs folder.
Contact
Either open an issue or write an email to hzmester@freemail.hu.
License
SLJIT is licensed under the Simplified BSD License.
Special Thanks
- 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