The engine strikes a good balance between performance and
maintainability. The LIR code can be compiled to many CPU
architectures, and the performance of the generated code
is very close to code written in assembly languages.
Although sljit does not support higher level features
such as automatic register allocation, it can be a code
generator backend for other JIT compiler libraries.
Developing these intermediate libraries takes far
less time, because they only needs to support a single
backend.
Looking at the code, "maintainability" is quite relative: it might be maintainable by the original author, but the code has no comment and is chuck-full of magic constants without any explanations. Or'ing this hex value, and'ing that other hex value, etc.
To be fair to the author, there is a ton of inherent complexity to something like this that you can't really smooth over with "readable" code. I think you'd have to spend a lot more time familiarising yourself with the codebase before making a call on whether it's maintainable or not.
I'd love to see some examples of other projects incorporating this library.