aboutsummaryrefslogtreecommitdiff
path: root/lvm.c
diff options
context:
space:
mode:
authorRoberto I <roberto@inf.puc-rio.br>2025-11-26 11:18:29 -0300
committerRoberto I <roberto@inf.puc-rio.br>2025-11-26 11:18:29 -0300
commitf33cc4ddec886ea499d7d41dd60cac5ddc5687db (patch)
tree917dccdbb60f984b21f5f7e1c0c3aa4f4f758ddc /lvm.c
parentd94f7ba3040eb06895d7305014e88157d3bfd1a1 (diff)
downloadlua-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.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/lvm.c b/lvm.c
index 2c868c21..c70e2b8a 100644
--- a/lvm.c
+++ b/lvm.c
@@ -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) {