Re: "nesting" metatables
[
Date Prev][
Date Next][
Thread Prev][
Thread Next]
[
Date Index]
[
Thread Index]
- Subject: Re: "nesting" metatables
- From: Roberto Ierusalimschy <roberto@...>
- Date: 2015年12月30日 14:17:06 -0200
> On Fri, Dec 25, 2015 at 12:00 AM, Jonathan Goble <jcgoble3@gmail.com> wrote:
>
> > On Thu, Dec 24, 2015 at 3:54 PM, Egor Skriptunoff
> > <egor.skriptunoff@gmail.com> wrote:
> > > On Thu, Dec 24, 2015 at 12:29 PM, Jonathan Goble <jcgoble3@gmail.com>
> > wrote:
> > >>
> > >> This metatable chaining could theoretically continue indefinitely.
> > >
> > > The nested metatable limit is 2000 levels for Lua 5.3 (and 100 for
> > LuaJIT).
> >
> > Hence "theoretically". :)
> >
> > I figured there were recursion limits, as in practice stack overflow
> > become a concern.
> >
>
> It seems that nesting of "__index" metamethods results in tail calls.
The nesting of "__index" metamethods is done in a C loop, with no
calls at all. The limit is there only to avoid infinite loops (with
a table inheriting from itself).
-- Roberto