[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: Re: Local Variables
- From: Tim Hill <drtimhill@...>
- Date: Fri, 8 Aug 2014 21:27:17 -0700
On Aug 8, 2014, at 5:26 PM, William Ahern <william@25thandClement.com> wrote:
> 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.
>
>
I was simplifying for the OT. And last time I looked locals and upvalues were distinct.
—Tim