lua-users home
lua-l archive

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


Hi all,
There is a question about the code generation of OP_CLOSURE instruction. 
I've read the code about it(lparser.c ln 517). An expdesc was filled with "VRELOCABLE" and the "OP_CLOSURE" instruction, but the target register of the instruction was filled with "nextreg" immediatly. 
For the example code:
===============
local a;
a = function() end;
===============
The code generated was:
===============
        1       [1]     LOADNIL         0 0
        2       [2]     CLOSURE         1 0     ; 0x80049078
        3       [2]     MOVE            0 1
        4       [2]     RETURN          0 1
===============
It seemed that we can not store the closure directly to local var "a".
Why not keep the expdesc as "VRELOCABLE" and patch the target register later?