Platform independent low-level JIT compiler
  • C 99.8%
  • Makefile 0.2%
Find a file
Nicholas Wilson 3908d4c1d4
Some checks failed
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 alpha (ev56) (push) Has been cancelled
Actions / Build and test on alpha (ev6) (push) Has been cancelled
Actions / Build and test on alpha (ev67) (push) Has been cancelled
Actions / Build and test on x86 (push) Has been cancelled
Actions / Build and test on x64 (push) Has been cancelled
Actions / Build and test on riscv32 (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 loongarch64 (push) Has been cancelled
Fix build & test failures on MIPS R6 (#369)
The code did not even compile, so it's certain to be untested.

- Fix some op encoding issues
- Provide a new emit_prefetch for R6
- Provide the missing sljit_emit_fmem on R6, which prevented linking and
  running the tests but assume unaligned is always supported
2026-09-11 04:14:19 -07:00
.github/workflows alpha: Add 64-bit JIT backend (#364) 2026-08-01 08:01:34 +02:00
docs Fix Docusaurus URL configuration (#316) 2025-03-17 12:24:54 +01:00
regex_src Fix build warnings by avoid function pointer to object pointer casts (#368) 2026-08-12 05:50:07 +02:00
sljit_src Fix build & test failures on MIPS R6 (#369) 2026-09-11 04:14:19 -07:00
test_src alpha: Add 64-bit JIT backend (#364) 2026-08-01 08:01:34 +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 alpha: Add 64-bit JIT backend (#364) 2026-08-01 08:01:34 +02: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