lua-users home
lua-l archive

[Date Prev][Date Next][Thread Prev][Thread Next] [Date Index] [Thread Index]


On Fri, Aug 08, 2014 at 05:09:55PM -0700, Tim Hill wrote:
> 
> On Aug 8, 2014, at 3:29 PM, Mason Mackaman <masondeanm@aol.com> wrote:
> 
> > So why isn?t everything in the standard libraries made local by default if it?s always faster that way?
> 
> Because locals are not accessible to libraries (and should not be, that?s
> what makes them local). A local ?foo? is fast because the compiler
> converts accesses to it into direct references to the Lua stack.

It converts them into a fast index into an upvalue array stored as part of
the currently running function.

The stack isn't involved at all, unless you create a closure which binds to
a live function parameter. Then it copies the value from the stack to the
upvalue slot when creating the function object.