aboutsummaryrefslogtreecommitdiff
path: root/src/lj_parse.c
diff options
context:
space:
mode:
authorMike Pall <mike>2013-02-27 17:11:31 +0100
committerMike Pall <mike>2013-02-27 17:29:35 +0100
commit28cfcf77445e144335961a020e3e08d84cf0091f (patch)
tree1a769d0ee0fab26a79073a118ba4f9e1557b081a /src/lj_parse.c
parentd44337a566bb3de06a6ac4ecf2d2a77767b86029 (diff)
downloadluajit-28cfcf77445e144335961a020e3e08d84cf0091f.tar.gz
luajit-28cfcf77445e144335961a020e3e08d84cf0091f.tar.bz2
luajit-28cfcf77445e144335961a020e3e08d84cf0091f.zip
String buffer refactoring, part 1.
Move string buffer handling to lj_buf.*. Use common buffer resizing function.
Diffstat (limited to 'src/lj_parse.c')
-rw-r--r--src/lj_parse.c13
1 files changed, 2 insertions, 11 deletions
diff --git a/src/lj_parse.c b/src/lj_parse.c
index 7ff7d728..3f992bec 100644
--- a/src/lj_parse.c
+++ b/src/lj_parse.c
@@ -1429,18 +1429,9 @@ static void fs_fixup_line(FuncState *fs, GCproto *pt,
1429 } 1429 }
1430} 1430}
1431 1431
1432/* Resize buffer if needed. */
1433static LJ_NOINLINE void fs_buf_resize(LexState *ls, MSize len)
1434{
1435 MSize sz = ls->sb.sz * 2;
1436 while (ls->sb.n + len > sz) sz = sz * 2;
1437 lj_str_resizebuf(ls->L, &ls->sb, sz);
1438}
1439
1440static LJ_AINLINE void fs_buf_need(LexState *ls, MSize len) 1432static LJ_AINLINE void fs_buf_need(LexState *ls, MSize len)
1441{ 1433{
1442 if (LJ_UNLIKELY(ls->sb.n + len > ls->sb.sz)) 1434 lj_buf_need(ls->L, &ls->sb, ls->sb.n + len);
1443 fs_buf_resize(ls, len);
1444} 1435}
1445 1436
1446/* Add string to buffer. */ 1437/* Add string to buffer. */
@@ -1469,7 +1460,7 @@ static size_t fs_prep_var(LexState *ls, FuncState *fs, size_t *ofsvar)
1469 VarInfo *vs =ls->vstack, *ve; 1460 VarInfo *vs =ls->vstack, *ve;
1470 MSize i, n; 1461 MSize i, n;
1471 BCPos lastpc; 1462 BCPos lastpc;
1472 lj_str_resetbuf(&ls->sb); /* Copy to temp. string buffer. */ 1463 lj_buf_reset(&ls->sb); /* Copy to temp. string buffer. */
1473 /* Store upvalue names. */ 1464 /* Store upvalue names. */
1474 for (i = 0, n = fs->nuv; i < n; i++) { 1465 for (i = 0, n = fs->nuv; i < n; i++) {
1475 GCstr *s = strref(vs[fs->uvmap[i]].name); 1466 GCstr *s = strref(vs[fs->uvmap[i]].name);