From 801aaf37b14a1fad5bb49c9a4200d25680152471 Mon Sep 17 00:00:00 2001 From: Roberto Ierusalimschy Date: Mon, 25 Mar 2002 14:47:14 -0300 Subject: simpler implementation for line information --- lcode.c | 27 ++++++--------------------- 1 file changed, 6 insertions(+), 21 deletions(-) (limited to 'lcode.c') diff --git a/lcode.c b/lcode.c index 086b527f..5caa6515 100644 --- a/lcode.c +++ b/lcode.c @@ -1,5 +1,5 @@ /* -** $Id: lcode.c,v 1.91 2002/03/08 19:10:32 roberto Exp roberto $ +** $Id: lcode.c,v 1.92 2002/03/21 20:31:43 roberto Exp roberto $ ** Code generator for Lua ** See Copyright Notice in lua.h */ @@ -737,31 +737,16 @@ void luaK_posfix (FuncState *fs, BinOpr op, expdesc *e1, expdesc *e2) { } -static void codelineinfo (FuncState *fs) { - Proto *f = fs->f; - LexState *ls = fs->ls; - if (ls->lastline > fs->lastline) { - if (ls->lastline > fs->lastline+1) { - luaM_growvector(fs->L, f->lineinfo, fs->nlineinfo, f->sizelineinfo, int, - MAX_INT, "line info overflow"); - f->lineinfo[fs->nlineinfo++] = -(ls->lastline - (fs->lastline+1)); - } - luaM_growvector(fs->L, f->lineinfo, fs->nlineinfo, f->sizelineinfo, int, - MAX_INT, "line info overflow"); - f->lineinfo[fs->nlineinfo++] = fs->pc; - fs->lastline = ls->lastline; - } -} - - static int luaK_code (FuncState *fs, Instruction i) { - Proto *f; - codelineinfo(fs); - f = fs->f; + Proto *f = fs->f; + int oldsize = f->sizecode; /* put new instruction in code array */ luaM_growvector(fs->L, f->code, fs->pc, f->sizecode, Instruction, MAX_INT, "code size overflow"); f->code[fs->pc] = i; + if (f->sizecode != oldsize) + luaM_reallocvector(fs->L, f->lineinfo, oldsize, f->sizecode, int); + f->lineinfo[fs->pc] = fs->ls->lastline; return fs->pc++; } -- cgit v1.2.3-55-g6feb