remove dummy argument in LUA_ASSERT

This commit is contained in:
Roberto Ierusalimschy
2000-06-30 11:35:17 -03:00
parent aa01d2568d
commit cfba572076
12 changed files with 62 additions and 62 deletions

View File

@@ -1,5 +1,5 @@
/* /*
** $Id: lbuiltin.c,v 1.115 2000/06/08 17:48:31 roberto Exp roberto $ ** $Id: lbuiltin.c,v 1.116 2000/06/12 13:52:05 roberto Exp roberto $
** Built-in functions ** Built-in functions
** See Copyright Notice in lua.h ** See Copyright Notice in lua.h
*/ */
@@ -372,7 +372,7 @@ void luaB_tostring (lua_State *L) {
lua_pushstring(L, "nil"); lua_pushstring(L, "nil");
return; return;
default: default:
LUA_INTERNALERROR(L, "invalid type"); LUA_INTERNALERROR("invalid type");
} }
lua_pushstring(L, buff); lua_pushstring(L, buff);
} }

16
lcode.c
View File

@@ -1,5 +1,5 @@
/* /*
** $Id: lcode.c,v 1.39 2000/06/26 19:28:31 roberto Exp roberto $ ** $Id: lcode.c,v 1.40 2000/06/28 20:20:36 roberto Exp roberto $
** Code generator for Lua ** Code generator for Lua
** See Copyright Notice in lua.h ** See Copyright Notice in lua.h
*/ */
@@ -191,7 +191,7 @@ void luaK_storevar (LexState *ls, const expdesc *var) {
luaK_code2(fs, OP_SETTABLE, 3, 3); luaK_code2(fs, OP_SETTABLE, 3, 3);
break; break;
default: default:
LUA_INTERNALERROR(ls->L, "invalid var kind to store"); LUA_INTERNALERROR("invalid var kind to store");
} }
} }
@@ -207,7 +207,7 @@ static OpCode invertjump (OpCode op) {
case OP_JMPT: case OP_JMPONT: return OP_JMPF; case OP_JMPT: case OP_JMPONT: return OP_JMPF;
case OP_JMPF: case OP_JMPONF: return OP_JMPT; case OP_JMPF: case OP_JMPONF: return OP_JMPT;
default: default:
LUA_INTERNALERROR(NULL, "invalid jump instruction"); LUA_INTERNALERROR("invalid jump instruction");
return OP_END; /* to avoid warnings */ return OP_END; /* to avoid warnings */
} }
} }
@@ -282,7 +282,7 @@ static void luaK_testgo (FuncState *fs, expdesc *v, int invert, OpCode jump) {
discharge1(fs, v); discharge1(fs, v);
prevpos = fs->pc-1; prevpos = fs->pc-1;
previous = &fs->f->code[prevpos]; previous = &fs->f->code[prevpos];
LUA_ASSERT(L, *previous==previous_instruction(fs), "no jump allowed here"); LUA_ASSERT(*previous==previous_instruction(fs), "no jump allowed here");
if (!ISJUMP(GET_OPCODE(*previous))) if (!ISJUMP(GET_OPCODE(*previous)))
prevpos = luaK_code1(fs, jump, NO_JUMP); prevpos = luaK_code1(fs, jump, NO_JUMP);
else { /* last instruction is already a jump */ else { /* last instruction is already a jump */
@@ -382,13 +382,13 @@ void luaK_infix (LexState *ls, int op, expdesc *v) {
void luaK_posfix (LexState *ls, int op, expdesc *v1, expdesc *v2) { void luaK_posfix (LexState *ls, int op, expdesc *v1, expdesc *v2) {
FuncState *fs = ls->fs; FuncState *fs = ls->fs;
if (op == TK_AND) { if (op == TK_AND) {
LUA_ASSERT(ls->L, v1->u.l.t == NO_JUMP, "list must be closed"); LUA_ASSERT(v1->u.l.t == NO_JUMP, "list must be closed");
discharge1(fs, v2); discharge1(fs, v2);
v1->u.l.t = v2->u.l.t; v1->u.l.t = v2->u.l.t;
luaK_concat(fs, &v1->u.l.f, v2->u.l.f); luaK_concat(fs, &v1->u.l.f, v2->u.l.f);
} }
else if (op == TK_OR) { else if (op == TK_OR) {
LUA_ASSERT(ls->L, v1->u.l.f == NO_JUMP, "list must be closed"); LUA_ASSERT(v1->u.l.f == NO_JUMP, "list must be closed");
discharge1(fs, v2); discharge1(fs, v2);
v1->u.l.f = v2->u.l.f; v1->u.l.f = v2->u.l.f;
luaK_concat(fs, &v1->u.l.t, v2->u.l.t); luaK_concat(fs, &v1->u.l.t, v2->u.l.t);
@@ -598,11 +598,11 @@ int luaK_code2 (FuncState *fs, OpCode o, int arg1, int arg2) {
case OP_GETINDEXED: case OP_GETINDEXED:
case OP_TAILCALL: case OP_TAILCALL:
case OP_ADDI: { case OP_ADDI: {
LUA_INTERNALERROR(L, "instruction used only for optimizations"); LUA_INTERNALERROR("instruction used only for optimizations");
break; break;
} }
default: { default: {
LUA_ASSERT(L, delta != VD, "invalid delta"); LUA_ASSERT(delta != VD, "invalid delta");
break; break;
} }
} }

View File

@@ -1,5 +1,5 @@
/* /*
** $Id: ldebug.c,v 1.25 2000/06/28 20:20:36 roberto Exp roberto $ ** $Id: ldebug.c,v 1.26 2000/06/30 14:29:35 roberto Exp roberto $
** Debug Interface ** Debug Interface
** See Copyright Notice in lua.h ** See Copyright Notice in lua.h
*/ */
@@ -101,7 +101,7 @@ static int lua_nups (StkId f) {
static int lua_currentpc (StkId f) { static int lua_currentpc (StkId f) {
CallInfo *ci = infovalue(f); CallInfo *ci = infovalue(f);
LUA_ASSERT(L, ttype(f) == TAG_LMARK, "function has no pc"); LUA_ASSERT(ttype(f) == TAG_LMARK, "function has no pc");
return (*ci->pc - 1) - ci->func->f.l->code; return (*ci->pc - 1) - ci->func->f.l->code;
} }
@@ -165,7 +165,7 @@ static void lua_funcinfo (lua_Debug *ar, StkId func) {
ar->what = "C"; ar->what = "C";
break; break;
default: default:
LUA_INTERNALERROR(L, "invalid `func' value"); LUA_INTERNALERROR("invalid `func' value");
} }
if (ar->linedefined == 0) if (ar->linedefined == 0)
ar->what = "main"; ar->what = "main";
@@ -245,24 +245,24 @@ static Instruction luaG_symbexec (const Proto *pt, int lastpc, int stackpos) {
top++; /* `arg' */ top++; /* `arg' */
while (pc < lastpc) { while (pc < lastpc) {
const Instruction i = code[pc++]; const Instruction i = code[pc++];
LUA_ASSERT(NULL, top <= pt->maxstacksize, "wrong stack"); LUA_ASSERT(top <= pt->maxstacksize, "wrong stack");
switch (GET_OPCODE(i)) { switch (GET_OPCODE(i)) {
case OP_RETURN: { case OP_RETURN: {
LUA_ASSERT(NULL, top >= GETARG_U(i), "wrong stack"); LUA_ASSERT(top >= GETARG_U(i), "wrong stack");
top = GETARG_U(i); top = GETARG_U(i);
break; break;
} }
case OP_CALL: { case OP_CALL: {
int nresults = GETARG_B(i); int nresults = GETARG_B(i);
if (nresults == MULT_RET) nresults = 1; if (nresults == MULT_RET) nresults = 1;
LUA_ASSERT(NULL, top >= GETARG_A(i), "wrong stack"); LUA_ASSERT(top >= GETARG_A(i), "wrong stack");
top = GETARG_A(i); top = GETARG_A(i);
while (nresults--) while (nresults--)
stack[top++] = pc-1; stack[top++] = pc-1;
break; break;
} }
case OP_TAILCALL: { case OP_TAILCALL: {
LUA_ASSERT(NULL, top >= GETARG_A(i), "wrong stack"); LUA_ASSERT(top >= GETARG_A(i), "wrong stack");
top = GETARG_B(i); top = GETARG_B(i);
break; break;
} }
@@ -311,10 +311,10 @@ static Instruction luaG_symbexec (const Proto *pt, int lastpc, int stackpos) {
} }
default: { default: {
int n; int n;
LUA_ASSERT(NULL, luaK_opproperties[GET_OPCODE(i)].push != VD, LUA_ASSERT(luaK_opproperties[GET_OPCODE(i)].push != VD,
"invalid opcode for default"); "invalid opcode for default");
top -= luaK_opproperties[GET_OPCODE(i)].pop; top -= luaK_opproperties[GET_OPCODE(i)].pop;
LUA_ASSERT(NULL, top >= 0, "wrong stack"); LUA_ASSERT(top >= 0, "wrong stack");
for (n=0; n<luaK_opproperties[GET_OPCODE(i)].push; n++) for (n=0; n<luaK_opproperties[GET_OPCODE(i)].push; n++)
stack[top++] = pc-1; stack[top++] = pc-1;
} }

4
lgc.c
View File

@@ -1,5 +1,5 @@
/* /*
** $Id: lgc.c,v 1.57 2000/06/12 13:52:05 roberto Exp roberto $ ** $Id: lgc.c,v 1.58 2000/06/26 19:28:31 roberto Exp roberto $
** Garbage Collector ** Garbage Collector
** See Copyright Notice in lua.h ** See Copyright Notice in lua.h
*/ */
@@ -206,7 +206,7 @@ static void collectudatatab (lua_State *L, int all) {
TString **p = &L->udt.hash[i]; TString **p = &L->udt.hash[i];
TString *next; TString *next;
while ((next = *p) != NULL) { while ((next = *p) != NULL) {
LUA_ASSERT(L, next->marked <= 1, "udata cannot be fixed"); LUA_ASSERT(next->marked <= 1, "udata cannot be fixed");
if (next->marked > all) { /* preserve? */ if (next->marked > all) { /* preserve? */
next->marked = 0; next->marked = 0;
p = &next->nexthash; p = &next->nexthash;

View File

@@ -1,5 +1,5 @@
/* /*
** $Id: lobject.c,v 1.41 2000/06/12 13:52:05 roberto Exp roberto $ ** $Id: lobject.c,v 1.42 2000/06/26 19:28:31 roberto Exp roberto $
** Some generic functions over Lua objects ** Some generic functions over Lua objects
** See Copyright Notice in lua.h ** See Copyright Notice in lua.h
*/ */
@@ -45,7 +45,7 @@ int luaO_equalObj (const TObject *t1, const TObject *t2) {
case TAG_CCLOSURE: case TAG_LCLOSURE: case TAG_CCLOSURE: case TAG_LCLOSURE:
return clvalue(t1) == clvalue(t2); return clvalue(t1) == clvalue(t2);
default: default:
LUA_ASSERT(L, ttype(t1) == TAG_NIL, "invalid type"); LUA_ASSERT(ttype(t1) == TAG_NIL, "invalid type");
return 1; /* TAG_NIL */ return 1; /* TAG_NIL */
} }
} }

View File

@@ -1,5 +1,5 @@
/* /*
** $Id: lobject.h,v 1.68 2000/06/26 19:28:31 roberto Exp roberto $ ** $Id: lobject.h,v 1.69 2000/06/28 20:20:36 roberto Exp roberto $
** Type definitions for Lua objects ** Type definitions for Lua objects
** See Copyright Notice in lua.h ** See Copyright Notice in lua.h
*/ */
@@ -15,11 +15,11 @@
#ifdef DEBUG #ifdef DEBUG
#undef NDEBUG #undef NDEBUG
#include <assert.h> #include <assert.h>
#define LUA_INTERNALERROR(L,s) assert(((void)s,0)) #define LUA_INTERNALERROR(s) assert(((void)s,0))
#define LUA_ASSERT(L,c,s) assert(((void)s,(c))) #define LUA_ASSERT(c,s) assert(((void)s,(c)))
#else #else
#define LUA_INTERNALERROR(L,s) /* empty */ #define LUA_INTERNALERROR(s) /* empty */
#define LUA_ASSERT(L,c,s) /* empty */ #define LUA_ASSERT(c,s) /* empty */
#endif #endif

View File

@@ -1,5 +1,5 @@
/* /*
** $Id: lparser.c,v 1.100 2000/06/28 17:06:07 roberto Exp roberto $ ** $Id: lparser.c,v 1.101 2000/06/28 20:20:36 roberto Exp roberto $
** LL(1) Parser and code generator for Lua ** LL(1) Parser and code generator for Lua
** See Copyright Notice in lua.h ** See Copyright Notice in lua.h
*/ */
@@ -67,7 +67,7 @@ static void next (LexState *ls) {
static void lookahead (LexState *ls) { static void lookahead (LexState *ls) {
LUA_ASSERT(ls->L, ls->lookahead.token == TK_EOS, "two look-aheads"); LUA_ASSERT(ls->lookahead.token == TK_EOS, "two look-aheads");
ls->lookahead.token = luaX_lex(ls); ls->lookahead.token = luaX_lex(ls);
} }
@@ -295,7 +295,7 @@ static void enterbreak (FuncState *fs, Breaklabel *bl) {
static void leavebreak (FuncState *fs, Breaklabel *bl) { static void leavebreak (FuncState *fs, Breaklabel *bl) {
fs->bl = bl->previous; fs->bl = bl->previous;
LUA_ASSERT(fs->L, bl->stacklevel == fs->stacklevel, "wrong levels"); LUA_ASSERT(bl->stacklevel == fs->stacklevel, "wrong levels");
luaK_patchlist(fs, bl->breaklist, luaK_getlabel(fs)); luaK_patchlist(fs, bl->breaklist, luaK_getlabel(fs));
} }
@@ -349,7 +349,7 @@ static void close_func (LexState *ls) {
luaI_registerlocalvar(ls, NULL, -1); /* flag end of vector */ luaI_registerlocalvar(ls, NULL, -1); /* flag end of vector */
luaM_reallocvector(L, f->locvars, fs->nvars, LocVar); luaM_reallocvector(L, f->locvars, fs->nvars, LocVar);
ls->fs = fs->prev; ls->fs = fs->prev;
LUA_ASSERT(L, fs->bl == NULL, "wrong list end"); LUA_ASSERT(fs->bl == NULL, "wrong list end");
} }
@@ -363,8 +363,8 @@ Proto *luaY_parser (lua_State *L, ZIO *z) {
chunk(&lexstate); chunk(&lexstate);
check_condition(&lexstate, (lexstate.t.token == TK_EOS), "<eof> expected"); check_condition(&lexstate, (lexstate.t.token == TK_EOS), "<eof> expected");
close_func(&lexstate); close_func(&lexstate);
LUA_ASSERT(L, funcstate.prev == NULL, "wrong list end"); LUA_ASSERT(funcstate.prev == NULL, "wrong list end");
LUA_ASSERT(L, funcstate.nupvalues == 0, "no upvalues in main"); LUA_ASSERT(funcstate.nupvalues == 0, "no upvalues in main");
return funcstate.f; return funcstate.f;
} }
@@ -1109,7 +1109,7 @@ static void chunk (LexState *ls) {
while (!islast && !block_follow(ls->t.token)) { while (!islast && !block_follow(ls->t.token)) {
islast = stat(ls); islast = stat(ls);
optional(ls, ';'); optional(ls, ';');
LUA_ASSERT(ls->L, ls->fs->stacklevel == ls->fs->nlocalvar, LUA_ASSERT(ls->fs->stacklevel == ls->fs->nlocalvar,
"stack size != # local vars"); "stack size != # local vars");
} }
} }

6
lref.c
View File

@@ -1,5 +1,5 @@
/* /*
** $Id: lref.c,v 1.13 2000/06/08 17:48:31 roberto Exp roberto $ ** $Id: lref.c,v 1.14 2000/06/12 13:52:05 roberto Exp roberto $
** reference mechanism ** reference mechanism
** See Copyright Notice in lua.h ** See Copyright Notice in lua.h
*/ */
@@ -106,12 +106,12 @@ void luaR_invalidaterefs (lua_State *L) {
struct Ref *r = &L->refArray[i]; struct Ref *r = &L->refArray[i];
if (r->st == HOLD && !ismarked(&r->o)) if (r->st == HOLD && !ismarked(&r->o))
r->st = COLLECTED; r->st = COLLECTED;
LUA_ASSERT(L, (r->st == LOCK && ismarked(&r->o)) || LUA_ASSERT((r->st == LOCK && ismarked(&r->o)) ||
r->st == COLLECTED || r->st == COLLECTED ||
r->st == NONEXT || r->st == NONEXT ||
(r->st < n && VALIDLINK(L, L->refArray[r->st].st, n)), (r->st < n && VALIDLINK(L, L->refArray[r->st].st, n)),
"inconsistent ref table"); "inconsistent ref table");
} }
LUA_ASSERT(L, VALIDLINK(L, L->refFree, n), "inconsistent ref table"); LUA_ASSERT(VALIDLINK(L, L->refFree, n), "inconsistent ref table");
} }

View File

@@ -1,5 +1,5 @@
/* /*
** $Id: lstate.c,v 1.26 2000/05/08 19:32:53 roberto Exp roberto $ ** $Id: lstate.c,v 1.27 2000/06/12 13:52:05 roberto Exp roberto $
** Global State ** Global State
** See Copyright Notice in lua.h ** See Copyright Notice in lua.h
*/ */
@@ -88,22 +88,22 @@ lua_State *lua_newstate (const char *s, ...) {
void lua_close (lua_State *L) { void lua_close (lua_State *L) {
luaC_collect(L, 1); /* collect all elements */ luaC_collect(L, 1); /* collect all elements */
LUA_ASSERT(L, L->rootproto == NULL, "list should be empty"); LUA_ASSERT(L->rootproto == NULL, "list should be empty");
LUA_ASSERT(L, L->rootcl == NULL, "list should be empty"); LUA_ASSERT(L->rootcl == NULL, "list should be empty");
LUA_ASSERT(L, L->roottable == NULL, "list should be empty"); LUA_ASSERT(L->roottable == NULL, "list should be empty");
luaS_freeall(L); luaS_freeall(L);
luaM_free(L, L->stack); luaM_free(L, L->stack);
luaM_free(L, L->IMtable); luaM_free(L, L->IMtable);
luaM_free(L, L->refArray); luaM_free(L, L->refArray);
luaM_free(L, L->Mbuffer); luaM_free(L, L->Mbuffer);
luaM_free(L, L->Cblocks); luaM_free(L, L->Cblocks);
LUA_ASSERT(L, L->numCblocks == 0, "Cblocks still open"); LUA_ASSERT(L->numCblocks == 0, "Cblocks still open");
LUA_ASSERT(L, L->nblocks == 0, "wrong count for nblocks"); LUA_ASSERT(L->nblocks == 0, "wrong count for nblocks");
LUA_ASSERT(L, L->Cstack.base == L->top, "C2Lua not empty"); LUA_ASSERT(L->Cstack.base == L->top, "C2Lua not empty");
luaM_free(L, L); luaM_free(L, L);
if (L == lua_state) { if (L == lua_state) {
LUA_ASSERT(L, memdebug_numblocks == 0, "memory leak!"); LUA_ASSERT(memdebug_numblocks == 0, "memory leak!");
LUA_ASSERT(L, memdebug_total == 0,"memory leak!"); LUA_ASSERT(memdebug_total == 0,"memory leak!");
lua_state = NULL; lua_state = NULL;
} }
} }

View File

@@ -1,5 +1,5 @@
/* /*
** $Id: lstring.c,v 1.38 2000/06/12 13:52:05 roberto Exp roberto $ ** $Id: lstring.c,v 1.39 2000/06/15 17:01:12 roberto Exp roberto $
** String table (keeps all strings handled by Lua) ** String table (keeps all strings handled by Lua)
** See Copyright Notice in lua.h ** See Copyright Notice in lua.h
*/ */
@@ -28,9 +28,9 @@ void luaS_init (lua_State *L) {
void luaS_freeall (lua_State *L) { void luaS_freeall (lua_State *L) {
LUA_ASSERT(L, L->strt.nuse==0, "non-empty string table"); LUA_ASSERT(L->strt.nuse==0, "non-empty string table");
luaM_free(L, L->strt.hash); luaM_free(L, L->strt.hash);
LUA_ASSERT(L, L->udt.nuse==0, "non-empty udata table"); LUA_ASSERT(L->udt.nuse==0, "non-empty udata table");
luaM_free(L, L->udt.hash); luaM_free(L, L->udt.hash);
} }
@@ -55,7 +55,7 @@ void luaS_resize (lua_State *L, stringtable *tb, int newsize) {
TString *next = p->nexthash; /* save next */ TString *next = p->nexthash; /* save next */
unsigned long h = (tb == &L->strt) ? p->u.s.hash : IntPoint(p->u.d.value); unsigned long h = (tb == &L->strt) ? p->u.s.hash : IntPoint(p->u.d.value);
int h1 = h&(newsize-1); /* new position */ int h1 = h&(newsize-1); /* new position */
LUA_ASSERT(L, h%newsize == (h&(newsize-1)), LUA_ASSERT(h%newsize == (h&(newsize-1)),
"a&(x-1) == a%x, for x power of 2"); "a&(x-1) == a%x, for x power of 2");
p->nexthash = newhash[h1]; /* chain it in new position */ p->nexthash = newhash[h1]; /* chain it in new position */
newhash[h1] = p; newhash[h1] = p;

View File

@@ -1,5 +1,5 @@
/* /*
** $Id: ltable.c,v 1.48 2000/06/12 13:52:05 roberto Exp roberto $ ** $Id: ltable.c,v 1.49 2000/06/28 17:03:56 roberto Exp roberto $
** Lua tables (hash) ** Lua tables (hash)
** See Copyright Notice in lua.h ** See Copyright Notice in lua.h
*/ */
@@ -63,7 +63,7 @@ Node *luaH_mainposition (const Hash *t, const TObject *key) {
default: default:
return NULL; /* invalid key */ return NULL; /* invalid key */
} }
LUA_ASSERT(L, h%(unsigned int)t->size == (h&((unsigned int)t->size-1)), LUA_ASSERT(h%(unsigned int)t->size == (h&((unsigned int)t->size-1)),
"a&(x-1) == a%x, for x power of 2"); "a&(x-1) == a%x, for x power of 2");
return &t->node[h&(t->size-1)]; return &t->node[h&(t->size-1)];
} }
@@ -140,7 +140,7 @@ void luaH_remove (Hash *t, TObject *key) {
} }
ttype(key) = TAG_NUMBER; ttype(key) = TAG_NUMBER;
nvalue(key) = n; nvalue(key) = n;
LUA_ASSERT(L, luaH_mainposition(t, key) == mp, "cannot change hash"); LUA_ASSERT(luaH_mainposition(t, key) == mp, "cannot change hash");
} }
} }
@@ -196,7 +196,7 @@ static void rehash (lua_State *L, Hash *t) {
Node *nold = t->node; Node *nold = t->node;
int nelems = numuse(t); int nelems = numuse(t);
int i; int i;
LUA_ASSERT(L, nelems<=oldsize, "wrong count"); LUA_ASSERT(nelems<=oldsize, "wrong count");
if (nelems >= oldsize-oldsize/4) /* using more than 3/4? */ if (nelems >= oldsize-oldsize/4) /* using more than 3/4? */
setnodevector(L, t, (lint32)oldsize*2); setnodevector(L, t, (lint32)oldsize*2);
else if (nelems <= oldsize/4 && /* less than 1/4? */ else if (nelems <= oldsize/4 && /* less than 1/4? */

14
lvm.c
View File

@@ -1,5 +1,5 @@
/* /*
** $Id: lvm.c,v 1.118 2000/06/27 19:00:36 roberto Exp roberto $ ** $Id: lvm.c,v 1.119 2000/06/28 20:20:36 roberto Exp roberto $
** Lua virtual machine ** Lua virtual machine
** See Copyright Notice in lua.h ** See Copyright Notice in lua.h
*/ */
@@ -384,7 +384,7 @@ StkId luaV_execute (lua_State *L, const Closure *cl, StkId base) {
case OP_PUSHNIL: { case OP_PUSHNIL: {
int n = GETARG_U(i); int n = GETARG_U(i);
LUA_ASSERT(L, n>0, "invalid argument"); LUA_ASSERT(n>0, "invalid argument");
do { do {
ttype(top++) = TAG_NIL; ttype(top++) = TAG_NIL;
} while (--n > 0); } while (--n > 0);
@@ -648,8 +648,8 @@ StkId luaV_execute (lua_State *L, const Closure *cl, StkId base) {
break; break;
case OP_FORLOOP: { case OP_FORLOOP: {
LUA_ASSERT(L, ttype(top-1) == TAG_NUMBER, "invalid step"); LUA_ASSERT(ttype(top-1) == TAG_NUMBER, "invalid step");
LUA_ASSERT(L, ttype(top-2) == TAG_NUMBER, "invalid limit"); LUA_ASSERT(ttype(top-2) == TAG_NUMBER, "invalid limit");
if (ttype(top-3) != TAG_NUMBER) if (ttype(top-3) != TAG_NUMBER)
lua_error(L, "`for' index must be a number"); lua_error(L, "`for' index must be a number");
nvalue(top-3) += nvalue(top-1); /* increment index */ nvalue(top-3) += nvalue(top-1); /* increment index */
@@ -675,7 +675,7 @@ StkId luaV_execute (lua_State *L, const Closure *cl, StkId base) {
} }
else { else {
top += 2; /* index,value */ top += 2; /* index,value */
LUA_ASSERT(L, top==L->top, "bad top"); LUA_ASSERT(top==L->top, "bad top");
} }
break; break;
} }
@@ -683,8 +683,8 @@ StkId luaV_execute (lua_State *L, const Closure *cl, StkId base) {
case OP_LFORLOOP: { case OP_LFORLOOP: {
int n; int n;
top -= 2; /* remove old index,value */ top -= 2; /* remove old index,value */
LUA_ASSERT(L, ttype(top-2) == TAG_TABLE, "invalid table"); LUA_ASSERT(ttype(top-2) == TAG_TABLE, "invalid table");
LUA_ASSERT(L, ttype(top-1) == TAG_NUMBER, "invalid counter"); LUA_ASSERT(ttype(top-1) == TAG_NUMBER, "invalid counter");
L->top = top; L->top = top;
n = luaA_next(L, hvalue(top-2), (int)nvalue(top-1)); n = luaA_next(L, hvalue(top-2), (int)nvalue(top-1));
if (n == 0) /* end loop? */ if (n == 0) /* end loop? */