diff options
| author | Roberto I <roberto@inf.puc-rio.br> | 2025-11-26 11:18:29 -0300 |
|---|---|---|
| committer | Roberto I <roberto@inf.puc-rio.br> | 2025-11-26 11:18:29 -0300 |
| commit | f33cc4ddec886ea499d7d41dd60cac5ddc5687db (patch) | |
| tree | 917dccdbb60f984b21f5f7e1c0c3aa4f4f758ddc /lvm.c | |
| parent | d94f7ba3040eb06895d7305014e88157d3bfd1a1 (diff) | |
| download | lua-f33cc4ddec886ea499d7d41dd60cac5ddc5687db.tar.gz lua-f33cc4ddec886ea499d7d41dd60cac5ddc5687db.tar.bz2 lua-f33cc4ddec886ea499d7d41dd60cac5ddc5687db.zip | |
New conceptual model for vararg
Conceptually, all functions get their vararg arguments in a vararg
table. The storing of vararg arguments in the stack is always treated
as an optimization.
Diffstat (limited to 'lvm.c')
| -rw-r--r-- | lvm.c | 5 |
1 files changed, 3 insertions, 2 deletions
| @@ -1935,8 +1935,9 @@ void luaV_execute (lua_State *L, CallInfo *ci) { | |||
| 1935 | } | 1935 | } |
| 1936 | vmcase(OP_VARARG) { | 1936 | vmcase(OP_VARARG) { |
| 1937 | StkId ra = RA(i); | 1937 | StkId ra = RA(i); |
| 1938 | int n = GETARG_C(i) - 1; /* required results */ | 1938 | int n = GETARG_C(i) - 1; /* required results (-1 means all) */ |
| 1939 | Protect(luaT_getvarargs(L, ci, ra, n)); | 1939 | int vatab = GETARG_k(i) ? GETARG_B(i) : -1; |
| 1940 | Protect(luaT_getvarargs(L, ci, ra, n, vatab)); | ||
| 1940 | vmbreak; | 1941 | vmbreak; |
| 1941 | } | 1942 | } |
| 1942 | vmcase(OP_GETVARG) { | 1943 | vmcase(OP_GETVARG) { |
