lua-users home
lua-l archive

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


Luiz Henrique de Figueiredo wrote:

> >From: Gavin Wraith <gavin@wraith.u-net.com>
>
> >Am I right in thinking that the Lua VM does two
> >lookups in executing something like
> >"a.b.c.d.e.f = a.b.c.d.e.f + 57" ?
>
> Yes. Here is the code for a.x=a.x+57
>
> main <@(stdin):0> (15 bytes at 0x80530d8)
>      0  04        STACK           4
>      1  00        ARGS            0
>      2  0F00      GETGLOBAL       0     ; "a"
>      4  0B01      PUSHCONSTANT    1     ; "x"
>      6  0F00      GETGLOBAL       0     ; "a"
>      8  1201      GETDOTTED       1     ; "x"
>     10  0739      PUSHNUMBER      57
>     12  25        ADDOP
>     13  1A        SETTABLEPOP
>     14  00        ENDCODE
>
> >This is presumably something which any language
> >must address which allows complex L-value
> >expressions. Any plans for this in a future
> >release?
>
> You have to keep in mind that getting and setting values in tables
> may trigger tag methods and so an update operation like 'a.x += 57' really
> is more complicated than it seems.

Why am I having this deja vu feeling here ? :-)

Anyway, couldn't Lua just compile 'a.x += 57' as if 'a.x = a.x + 57' was
written ?
Perhaps because there would still be no real '+=' operator ?

>
> There are two reasons for wanting += : readability and efficiency.
> I agree with readability but not with efficiency. Lua is already very fast
> and even faster in the next version.
> --lhf

-Markus-