better error messages
This commit is contained in:
108
lcode.c
108
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 */
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user