/* Save line info for a new instruction. If difference from last line does not fit in a byte, of after that many instructions, save a new absolute line info; (in that case, the special value 'ABSLINEINFO' in 'lineinfo' signals the existence of this absolute information.) Otherwise, store the difference from last line in 'lineinfo'.  */
static void savelineinfo(FuncState *fs, Proto *f, int line)
/* Save line info for a new instruction. If difference from last line does not fit in a byte, of after that many instructions, save a new absolute line info; (in that case, the special value 'ABSLINEINFO' in 'lineinfo' signals the existence of this absolute information.) Otherwise, store the difference from last line in 'lineinfo'.  */
static void savelineinfo(FuncState *fs, Proto *f, int line)
{
    luaM_growvector(fs->ls->L, f->abslineinfo, fs->nabslineinfo,
                    f->sizeabslineinfo, AbsLineInfo, MAX_INT, "lines");
    f->abslineinfo[fs->nabslineinfo].pc = pc;
    f->abslineinfo[fs->nabslineinfo++].line = line;
    linedif = ABSLINEINFO;
    fs->iwthabs = 1;
  }
  luaM_growvector(fs->ls->L, f->lineinfo, pc, f->sizelineinfo, ls_byte,
                  MAX_INT, "opcodes");
  f->lineinfo[pc] = linedif;
  fs->previousline = line;
}