I made some seemingly similar design choices in TXR Lisp (not knowing anything about Lua or its internals).
- register based VM with 32 bit instruction words holding 6 bit opcodes.
- closures that start on the stack and are moved to the heap.
- single pass compiler with no SSA, Lisp straight to code
- but with additional optimization, informed by control and data flow analysis, done on the VM assembly code.
- register based VM with 32 bit instruction words holding 6 bit opcodes.
- closures that start on the stack and are moved to the heap.
- single pass compiler with no SSA, Lisp straight to code - but with additional optimization, informed by control and data flow analysis, done on the VM assembly code.