lua-users home
lua-l archive

Why have two RETURN opcode for function

[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

AltStyle によって変換されたページ (->オリジナル) /