diff options
author | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 2022-10-29 12:06:37 -0300 |
---|---|---|
committer | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 2022-10-29 12:06:37 -0300 |
commit | 413a393e6222482f46599e138bebac162610a572 (patch) | |
tree | 181517f8ec8d56f9101de33f4891729044f244de /lparser.c | |
parent | ba089bcb08a0efc6c26fb5c1e3c9d61c00cc012c (diff) | |
download | lua-413a393e6222482f46599e138bebac162610a572.tar.gz lua-413a393e6222482f46599e138bebac162610a572.tar.bz2 lua-413a393e6222482f46599e138bebac162610a572.zip |
Stack indices changed to union's
That will allow to change pointers to offsets while reallocating
the stack.
Diffstat (limited to 'lparser.c')
-rw-r--r-- | lparser.c | 6 |
1 files changed, 3 insertions, 3 deletions
@@ -1944,10 +1944,10 @@ LClosure *luaY_parser (lua_State *L, ZIO *z, Mbuffer *buff, | |||
1944 | LexState lexstate; | 1944 | LexState lexstate; |
1945 | FuncState funcstate; | 1945 | FuncState funcstate; |
1946 | LClosure *cl = luaF_newLclosure(L, 1); /* create main closure */ | 1946 | LClosure *cl = luaF_newLclosure(L, 1); /* create main closure */ |
1947 | setclLvalue2s(L, L->top, cl); /* anchor it (to avoid being collected) */ | 1947 | setclLvalue2s(L, L->top.p, cl); /* anchor it (to avoid being collected) */ |
1948 | luaD_inctop(L); | 1948 | luaD_inctop(L); |
1949 | lexstate.h = luaH_new(L); /* create table for scanner */ | 1949 | lexstate.h = luaH_new(L); /* create table for scanner */ |
1950 | sethvalue2s(L, L->top, lexstate.h); /* anchor it */ | 1950 | sethvalue2s(L, L->top.p, lexstate.h); /* anchor it */ |
1951 | luaD_inctop(L); | 1951 | luaD_inctop(L); |
1952 | funcstate.f = cl->p = luaF_newproto(L); | 1952 | funcstate.f = cl->p = luaF_newproto(L); |
1953 | luaC_objbarrier(L, cl, cl->p); | 1953 | luaC_objbarrier(L, cl, cl->p); |
@@ -1961,7 +1961,7 @@ LClosure *luaY_parser (lua_State *L, ZIO *z, Mbuffer *buff, | |||
1961 | lua_assert(!funcstate.prev && funcstate.nups == 1 && !lexstate.fs); | 1961 | lua_assert(!funcstate.prev && funcstate.nups == 1 && !lexstate.fs); |
1962 | /* all scopes should be correctly finished */ | 1962 | /* all scopes should be correctly finished */ |
1963 | lua_assert(dyd->actvar.n == 0 && dyd->gt.n == 0 && dyd->label.n == 0); | 1963 | lua_assert(dyd->actvar.n == 0 && dyd->gt.n == 0 && dyd->label.n == 0); |
1964 | L->top--; /* remove scanner's table */ | 1964 | L->top.p--; /* remove scanner's table */ |
1965 | return cl; /* closure is on the stack, too */ | 1965 | return cl; /* closure is on the stack, too */ |
1966 | } | 1966 | } |
1967 | 1967 | ||