From 014a09c5095be3ef11366530e4630ee817a526a7 Mon Sep 17 00:00:00 2001 From: Roberto Ierusalimschy Date: Wed, 28 Jun 2000 17:21:06 -0300 Subject: better error messages --- lcode.c | 108 +++++++++++++++++++++++++++++++--------------------------------- 1 file changed, 53 insertions(+), 55 deletions(-) (limited to 'lcode.c') diff --git a/lcode.c b/lcode.c index 98ad5078..4163c66d 100644 --- a/lcode.c +++ b/lcode.c @@ -1,5 +1,5 @@ /* -** $Id: lcode.c,v 1.38 2000/06/21 18:13:56 roberto Exp roberto $ +** $Id: lcode.c,v 1.39 2000/06/26 19:28:31 roberto Exp roberto $ ** Code generator for Lua ** See Copyright Notice in lua.h */ @@ -423,12 +423,9 @@ int luaK_code1 (FuncState *fs, OpCode o, int arg1) { } -#define VD 100 /* flag for variable delta */ - - int luaK_code2 (FuncState *fs, OpCode o, int arg1, int arg2) { Instruction i = previous_instruction(fs); - int delta = luaK_opproperties[o].delta; + int delta = luaK_opproperties[o].push - luaK_opproperties[o].pop; int optm = 0; /* 1 when there is an optimization */ switch (o) { case OP_CLOSURE: { @@ -621,7 +618,7 @@ int luaK_code2 (FuncState *fs, OpCode o, int arg1, int arg2) { case iS: i = CREATE_S(o, arg1); break; case iAB: i = CREATE_AB(o, arg1, arg2); break; } - if (fs->f->debug) { + if (fs->debug) { LexState *ls = fs->ls; luaX_checklimit(ls, ls->lastline, MAXARG_U, "lines in a chunk"); luaM_growvector(fs->L, fs->f->lines, fs->pc, 1, int, "??", MAXARG_U); @@ -636,53 +633,54 @@ int luaK_code2 (FuncState *fs, OpCode o, int arg1, int arg2) { const struct OpProperties luaK_opproperties[NUM_OPCODES] = { - {iO, 0}, /* OP_END */ - {iU, 0}, /* OP_RETURN */ - {iAB, 0}, /* OP_CALL */ - {iAB, 0}, /* OP_TAILCALL */ - {iU, VD}, /* OP_PUSHNIL */ - {iU, VD}, /* OP_POP */ - {iS, 1}, /* OP_PUSHINT */ - {iU, 1}, /* OP_PUSHSTRING */ - {iU, 1}, /* OP_PUSHNUM */ - {iU, 1}, /* OP_PUSHNEGNUM */ - {iU, 1}, /* OP_PUSHUPVALUE */ - {iU, 1}, /* OP_GETLOCAL */ - {iU, 1}, /* OP_GETGLOBAL */ - {iO, -1}, /* OP_GETTABLE */ - {iU, 0}, /* OP_GETDOTTED */ - {iU, 0}, /* OP_GETINDEXED */ - {iU, 1}, /* OP_PUSHSELF */ - {iU, 1}, /* OP_CREATETABLE */ - {iU, -1}, /* OP_SETLOCAL */ - {iU, -1}, /* OP_SETGLOBAL */ - {iAB, VD}, /* OP_SETTABLE */ - {iAB, VD}, /* OP_SETLIST */ - {iU, VD}, /* OP_SETMAP */ - {iO, -1}, /* OP_ADD */ - {iS, 0}, /* OP_ADDI */ - {iO, -1}, /* OP_SUB */ - {iO, -1}, /* OP_MULT */ - {iO, -1}, /* OP_DIV */ - {iO, -1}, /* OP_POW */ - {iU, VD}, /* OP_CONCAT */ - {iO, 0}, /* OP_MINUS */ - {iO, 0}, /* OP_NOT */ - {iS, -2}, /* OP_JMPNE */ - {iS, -2}, /* OP_JMPEQ */ - {iS, -2}, /* OP_JMPLT */ - {iS, -2}, /* OP_JMPLE */ - {iS, -2}, /* OP_JMPGT */ - {iS, -2}, /* OP_JMPGE */ - {iS, -1}, /* OP_JMPT */ - {iS, -1}, /* OP_JMPF */ - {iS, -1}, /* OP_JMPONT */ - {iS, -1}, /* OP_JMPONF */ - {iS, 0}, /* OP_JMP */ - {iO, 1}, /* OP_PUSHNILJMP */ - {iS, 0}, /* OP_FORPREP */ - {iS, -3}, /* OP_FORLOOP */ - {iS, 3}, /* OP_LFORPREP */ - {iS, -4}, /* OP_LFORLOOP */ - {iAB, VD} /* OP_CLOSURE */ + {iO, 0, 0}, /* OP_END */ + {iU, 0, 0}, /* OP_RETURN */ + {iAB, 0, 0}, /* OP_CALL */ + {iAB, 0, 0}, /* OP_TAILCALL */ + {iU, VD, 0}, /* OP_PUSHNIL */ + {iU, VD, 0}, /* OP_POP */ + {iS, 1, 0}, /* OP_PUSHINT */ + {iU, 1, 0}, /* OP_PUSHSTRING */ + {iU, 1, 0}, /* OP_PUSHNUM */ + {iU, 1, 0}, /* OP_PUSHNEGNUM */ + {iU, 1, 0}, /* OP_PUSHUPVALUE */ + {iU, 1, 0}, /* OP_GETLOCAL */ + {iU, 1, 0}, /* OP_GETGLOBAL */ + {iO, 1, 2}, /* OP_GETTABLE */ + {iU, 1, 1}, /* OP_GETDOTTED */ + {iU, 1, 1}, /* OP_GETINDEXED */ + {iU, 2, 1}, /* OP_PUSHSELF */ + {iU, 1, 0}, /* OP_CREATETABLE */ + {iU, 0, 1}, /* OP_SETLOCAL */ + {iU, 0, 1}, /* OP_SETGLOBAL */ + {iAB, VD, 0}, /* OP_SETTABLE */ + {iAB, VD, 0}, /* OP_SETLIST */ + {iU, VD, 0}, /* OP_SETMAP */ + {iO, 1, 2}, /* OP_ADD */ + {iS, 1, 1}, /* OP_ADDI */ + {iO, 1, 2}, /* OP_SUB */ + {iO, 1, 2}, /* OP_MULT */ + {iO, 1, 2}, /* OP_DIV */ + {iO, 1, 2}, /* OP_POW */ + {iU, VD, 0}, /* OP_CONCAT */ + {iO, 1, 1}, /* OP_MINUS */ + {iO, 1, 1}, /* OP_NOT */ + {iS, 0, 2}, /* OP_JMPNE */ + {iS, 0, 2}, /* OP_JMPEQ */ + {iS, 0, 2}, /* OP_JMPLT */ + {iS, 0, 2}, /* OP_JMPLE */ + {iS, 0, 2}, /* OP_JMPGT */ + {iS, 0, 2}, /* OP_JMPGE */ + {iS, 0, 1}, /* OP_JMPT */ + {iS, 0, 1}, /* OP_JMPF */ + {iS, 0, 1}, /* OP_JMPONT */ + {iS, 0, 1}, /* OP_JMPONF */ + {iS, 0, 0}, /* OP_JMP */ + {iO, 1, 0}, /* OP_PUSHNILJMP */ + {iS, 0, 0}, /* OP_FORPREP */ + {iS, 0, 3}, /* OP_FORLOOP */ + {iS, 3, 0}, /* OP_LFORPREP */ + {iS, 0, 4}, /* OP_LFORLOOP */ + {iAB, VD, 0} /* OP_CLOSURE */ }; + -- cgit v1.2.3-55-g6feb