[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: Re: Local Variables
- From: William Ahern <william@...>
- Date: Fri, 8 Aug 2014 17:26:34 -0700
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.