From 7a40cdbda0a171da223094208dd3c6e3eca13922 Mon Sep 17 00:00:00 2001 From: Roberto Ierusalimschy Date: Tue, 11 Feb 2003 08:46:24 -0200 Subject: different variables for number of upvalues and size of upvalue array (makes code clearer) --- lparser.c | 27 ++++++++++++--------------- 1 file changed, 12 insertions(+), 15 deletions(-) (limited to 'lparser.c') diff --git a/lparser.c b/lparser.c index d804e430..fb98ebc8 100644 --- a/lparser.c +++ b/lparser.c @@ -1,5 +1,5 @@ /* -** $Id: lparser.c,v 1.202 2002/12/11 12:34:22 roberto Exp roberto $ +** $Id: lparser.c,v 1.203 2002/12/19 11:11:55 roberto Exp roberto $ ** Lua Parser ** See Copyright Notice in lua.h */ @@ -181,19 +181,20 @@ static void create_local (LexState *ls, const char *name) { static int indexupvalue (FuncState *fs, TString *name, expdesc *v) { int i; - for (i=0; inu; i++) { + Proto *f = fs->f; + for (i=0; inups; i++) { if (fs->upvalues[i].k == v->k && fs->upvalues[i].info == v->info) { lua_assert(fs->f->upvalues[i] == name); return i; } } /* new one */ - luaX_checklimit(fs->ls, fs->nu + 1, MAXUPVALUES, "upvalues"); - luaM_growvector(fs->L, fs->f->upvalues, fs->nu, fs->f->nupvalues, + luaX_checklimit(fs->ls, f->nups + 1, MAXUPVALUES, "upvalues"); + luaM_growvector(fs->L, fs->f->upvalues, f->nups, fs->f->sizeupvalues, TString *, MAX_INT, ""); - fs->f->upvalues[fs->nu] = name; - fs->upvalues[fs->nu] = *v; - return fs->nu++; + fs->f->upvalues[f->nups] = name; + fs->upvalues[f->nups] = *v; + return f->nups++; } @@ -307,7 +308,7 @@ static void pushclosure (LexState *ls, FuncState *func, expdesc *v) { MAXARG_Bx, "constant table overflow"); f->p[fs->np++] = func->f; init_exp(v, VRELOCABLE, luaK_codeABx(fs, OP_CLOSURE, 0, fs->np-1)); - for (i=0; inu; i++) { + for (i=0; if->nups; i++) { OpCode o = (func->upvalues[i].k == VLOCAL) ? OP_MOVE : OP_GETUPVAL; luaK_codeABC(fs, o, 0, func->upvalues[i].info, 0); } @@ -326,17 +327,13 @@ static void open_func (LexState *ls, FuncState *fs) { fs->jpc = NO_JUMP; fs->freereg = 0; fs->nk = 0; - fs->nu = 0; fs->h = luaH_new(ls->L, 0, 0); fs->np = 0; fs->nlocvars = 0; fs->nactvar = 0; fs->bl = NULL; - f->code = NULL; f->source = ls->source; f->maxstacksize = 2; /* registers 0/1 are always valid */ - f->numparams = 0; /* default for main chunk */ - f->is_vararg = 0; /* default for main chunk */ } @@ -356,8 +353,8 @@ static void close_func (LexState *ls) { f->sizep = fs->np; luaM_reallocvector(L, f->locvars, f->sizelocvars, fs->nlocvars, LocVar); f->sizelocvars = fs->nlocvars; - luaM_reallocvector(L, f->upvalues, f->nupvalues, fs->nu, TString *); - f->nupvalues = fs->nu; + luaM_reallocvector(L, f->upvalues, f->sizeupvalues, f->nups, TString *); + f->sizeupvalues = f->nups; lua_assert(luaG_checkcode(f)); lua_assert(fs->bl == NULL); ls->fs = fs->prev; @@ -376,7 +373,7 @@ Proto *luaY_parser (lua_State *L, ZIO *z, Mbuffer *buff) { check_condition(&lexstate, (lexstate.t.token == TK_EOS), " expected"); close_func(&lexstate); lua_assert(funcstate.prev == NULL); - lua_assert(funcstate.nu == 0); + lua_assert(funcstate.f->nups == 0); lua_assert(lexstate.nestlevel == 0); return funcstate.f; } -- cgit v1.2.3-55-g6feb