Platform independent low-level JIT compiler
Find a file
Carlo Marcelo Arenas Belón 8d40e0306a
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
riscv: make sure platform identification for RISCV is succint (#348)
Some applications (ex: PCRE2) expect to use a fixed buffer that
might be too short otherwise.
2025-10-27 08:00:22 +01:00
.github/workflows Implement compare select (min/max) operation (#338) 2025-09-22 10:37:04 +02:00
docs Fix Docusaurus URL configuration (#316) 2025-03-17 12:24:54 +01:00
regex_src Rework sljit_emit_enter argument passing 2024-07-17 07:35:26 +00:00
sljit_src riscv: make sure platform identification for RISCV is succint (#348) 2025-10-27 08:00:22 +01:00
test_src Improve carry flag handling (#347) 2025-10-09 16:51:00 +02:00
.gitignore Support MIPS R6. 2019-02-06 11:56:35 -08:00
API_CHANGES Implement add address operation (#308) 2025-03-06 07:34:57 +01:00
CMakeLists.txt build: add barebones cmake for Windows (#123) 2023-07-12 06:42:28 +02:00
GNUmakefile Add more buffer tests (#304) 2025-02-12 14:25:14 +01:00
INTERNAL_CHANGES A new file for tracking internal changes are added. 2012-11-21 11:19:57 +00:00
LICENSE Add license file 2022-04-25 13:52:50 +00:00
README.md Consolidate docs (#301) 2025-02-09 06:58:23 +01:00

SLJIT

Platform-independent low-level JIT compiler

https://zherczeg.github.io/sljit/


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

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