aboutsummaryrefslogtreecommitdiff
path: root/lcode.c
diff options
context:
space:
mode:
Diffstat (limited to 'lcode.c')
-rw-r--r--lcode.c27
1 files changed, 6 insertions, 21 deletions
diff --git a/lcode.c b/lcode.c
index 086b527f..5caa6515 100644
--- a/lcode.c
+++ b/lcode.c
@@ -1,5 +1,5 @@
1/* 1/*
2** $Id: lcode.c,v 1.91 2002/03/08 19:10:32 roberto Exp roberto $ 2** $Id: lcode.c,v 1.92 2002/03/21 20:31:43 roberto Exp roberto $
3** Code generator for Lua 3** Code generator for Lua
4** See Copyright Notice in lua.h 4** See Copyright Notice in lua.h
5*/ 5*/
@@ -737,31 +737,16 @@ void luaK_posfix (FuncState *fs, BinOpr op, expdesc *e1, expdesc *e2) {
737} 737}
738 738
739 739
740static void codelineinfo (FuncState *fs) {
741 Proto *f = fs->f;
742 LexState *ls = fs->ls;
743 if (ls->lastline > fs->lastline) {
744 if (ls->lastline > fs->lastline+1) {
745 luaM_growvector(fs->L, f->lineinfo, fs->nlineinfo, f->sizelineinfo, int,
746 MAX_INT, "line info overflow");
747 f->lineinfo[fs->nlineinfo++] = -(ls->lastline - (fs->lastline+1));
748 }
749 luaM_growvector(fs->L, f->lineinfo, fs->nlineinfo, f->sizelineinfo, int,
750 MAX_INT, "line info overflow");
751 f->lineinfo[fs->nlineinfo++] = fs->pc;
752 fs->lastline = ls->lastline;
753 }
754}
755
756
757static int luaK_code (FuncState *fs, Instruction i) { 740static int luaK_code (FuncState *fs, Instruction i) {
758 Proto *f; 741 Proto *f = fs->f;
759 codelineinfo(fs); 742 int oldsize = f->sizecode;
760 f = fs->f;
761 /* put new instruction in code array */ 743 /* put new instruction in code array */
762 luaM_growvector(fs->L, f->code, fs->pc, f->sizecode, Instruction, 744 luaM_growvector(fs->L, f->code, fs->pc, f->sizecode, Instruction,
763 MAX_INT, "code size overflow"); 745 MAX_INT, "code size overflow");
764 f->code[fs->pc] = i; 746 f->code[fs->pc] = i;
747 if (f->sizecode != oldsize)
748 luaM_reallocvector(fs->L, f->lineinfo, oldsize, f->sizecode, int);
749 f->lineinfo[fs->pc] = fs->ls->lastline;
765 return fs->pc++; 750 return fs->pc++;
766} 751}
767 752