The authors implemented a stack-based virtual machine for their benchmarks, but as they briefly alluded a register-based virtual machine should perform better. With a register-based VM there is no excessive stack fiddling and fewer instructions to perform the same task. Consider the instructions for adding two integers and storing the result in a variable. In a stack machine this requires four instructions: 'push int', 'push int', 'add', and 'pop to variable' but in a register machine it could be done with a single instruction: 'add $r1, $r2, $r3'.
For further reading, there is an excellent paper [1] by the authors of Lua discussing the practical benefits of implementing the language using a register machine.
For further reading, there is an excellent paper [1] by the authors of Lua discussing the practical benefits of implementing the language using a register machine.
[1] https://www.lua.org/doc/jucs05.pdf