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.