locals are pointers to the stack (just a number because the stack frame is limited)
upvalues are pointers to the stack that can later become pointers to the heap, does this mean that every upvalue is made of 2 pointers (using twice the space) or it is made of 1 pointer with a tag that is changed/update when the upvalue is moved from the stack to the heap?
(forgive me for the language not very accurate - I hope the question is clear)
Andrea