lua-users home
lua-l archive

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


I have simple Lua code, why have two RETURN opcode for foo function after i check compile code. 

function foo (a)
    print("foo", a)
    return 2
end
foo(123)

./luac -l a.lua

main <a.lua:0,0> (6 instructions at 0xe55b40)
0+ params, 2 slots, 1 upvalue, 0 locals, 3 constants, 1 function
1 [5] CLOSURE   0 0 ; 0xe55d40
2 [2] SETTABUP 0 -1 0 ; _ENV "foo"
3 [6] GETTABUP 0 0 -2 ; _ENV "foo"
4 [6] LOADK     1 -3 ; 123
5 [6] CALL     0 2 1
6 [6] RETURN   0 1

function <a.lua:2,5> (7 instructions at 0xe55d40)
1 param, 4 slots, 1 upvalue, 1 local, 3 constants, 0 functions
1 [3] GETTABUP 1 0 -1 ; _ENV "print"
2 [3] LOADK     2 -2 ; "foo"
3 [3] MOVE     3 0
4 [3] CALL     1 3 1
5 [4] LOADK     1 -3 ; 2
6 [4] RETURN   1 2
7 [5] RETURN   0 1