summaryrefslogtreecommitdiff
path: root/src/lj_parse.c
diff options
context:
space:
mode:
authorMike Pall <mike>2010-09-09 12:01:29 +0200
committerMike Pall <mike>2010-09-09 12:01:29 +0200
commitfd63b05253f11d7e436c3685827fce9b64725da6 (patch)
tree309dc62115841c0ec35ca92cd2ce4871f8dc6679 /src/lj_parse.c
parent8a1af8cf89e5b23d4c7e47dafd0bdba09a3c7e01 (diff)
downloadluajit-fd63b05253f11d7e436c3685827fce9b64725da6.tar.gz
luajit-fd63b05253f11d7e436c3685827fce9b64725da6.tar.bz2
luajit-fd63b05253f11d7e436c3685827fce9b64725da6.zip
Use biased integer constant for TSETM array index.
Diffstat (limited to 'src/lj_parse.c')
-rw-r--r--src/lj_parse.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/lj_parse.c b/src/lj_parse.c
index f5f59d03..e1ca2ff7 100644
--- a/src/lj_parse.c
+++ b/src/lj_parse.c
@@ -1369,7 +1369,8 @@ static void expr_table(LexState *ls, ExpDesc *e)
1369 lua_assert(bc_a(ilp->ins) == freg && 1369 lua_assert(bc_a(ilp->ins) == freg &&
1370 bc_op(ilp->ins) == (narr > 256 ? BC_TSETV : BC_TSETB)); 1370 bc_op(ilp->ins) == (narr > 256 ? BC_TSETV : BC_TSETB));
1371 expr_init(&en, VKNUM, 0); 1371 expr_init(&en, VKNUM, 0);
1372 setintV(&en.u.nval, narr-1); 1372 en.u.nval.u32.lo = narr-1;
1373 en.u.nval.u32.hi = 0x43300000; /* Biased integer to avoid denormals. */
1373 if (narr > 256) { fs->pc--; ilp--; } 1374 if (narr > 256) { fs->pc--; ilp--; }
1374 ilp->ins = BCINS_AD(BC_TSETM, freg, const_num(fs, &en)); 1375 ilp->ins = BCINS_AD(BC_TSETM, freg, const_num(fs, &en));
1375 setbc_b(&ilp[-1].ins, 0); 1376 setbc_b(&ilp[-1].ins, 0);