It's a promising technology, but it's still in the research domain. It's not an automated procedure. You need to use the yk fork of LLVM to compile and link your code, and you have to manually annotate and alter a fair amount of your interpreter loop with yk macros in non-trivial ways:
while (true) {
__yk_tracebasicblock(0);
Instruction i = code[pc];
switch (GET_OPCODE(i)) {
case OP_LOOKUP:
__yk_tracebasicblock(1);
push(lookup(GET_OPVAL()));
pc++; break;
...
case OP_INT: push(yk_promote(constant_pool[GET_OPVAL(i)])); pc++; break;
Knowledge of tracing compilers, LLVM and SSA are needed by the user.
> added about 400LoC to PUC Lua, and changed under 50LoC
Lua 5.5.0 has 32106 lines of code including comments and empty lines. The changes amount to 1.4% of the code base. And then there's the code changes in the yk LLVM fork that you'd have to maintain which I'm guessing would be a few orders of magnitude larger.
If this project would be able to detect the interpreter hotspots itself and completely automate the procedure, it would be great.