> For example, in [1] lua has tag union (TObject?) which seems no longer
> available, only TValue can be found. In addition, the purpose of some
> variables in source is not very clear with its naming style such as
> tt__ in lobject.h.
This has nothing to do with the VM. There are people who can converse
in an informed way on these lowest-level Lua internals. Maybe one of
them could respond.
I'd argue that things like TValue have everything to do with the VM. The bytecode format might be the only public interface to the VM, but the actual implementation of the VM has equal claim to being called the VM.
As for Jason's question, TValue is still a tagged union, however under some compilation flags it can also be NaN-packed.