History

Lua 5.2.0-rc1

Lua Team committed 14 years ago

Commit d74d0e51 parent 8203bab51 files · +1861 −1136Browse files

Showing the changes to src/lcode.c (1 of 51 files). Show all

Unified · Split

src/lcode.c+12−10
@@ -1,5 +1,5 @@
11 /*
2−** $Id: lcode.c,v 2.56 2011/05/31 18:27:56 roberto Exp $
2+** $Id: lcode.c,v 2.60 2011/08/30 16:26:41 roberto Exp $
33 ** Code generator for Lua
44 ** See Copyright Notice in lua.h
55 */
@@ -44,8 +44,8 @@ void luaK_nil (FuncState *fs, int from, int n) { · 38 unmodified lines
4444 int pl = pfrom + GETARG_B(*previous);
4545 if ((pfrom <= from && from <= pl + 1) ||
4646 (from <= pfrom && pfrom <= l + 1)) { /* can connect both? */
47− if (pfrom < from) from = pfrom; /* from = min(from, pfrom) */
48− if (pl > l) l = pl; /* l = max(l, pl) */
47+ if (pfrom < from) from = pfrom; /* from = min(from, pfrom) */
48+ if (pl > l) l = pl; /* l = max(l, pl) */
4949 SETARG_A(*previous, from);
5050 SETARG_B(*previous, l - from);
5151 return;
@@ -213,11 +213,11 @@ static int luaK_code (FuncState *fs, Instruction i) { · 161 unmodified lines
213213 Proto *f = fs->f;
214214 dischargejpc(fs); /* `pc' will change */
215215 /* put new instruction in code array */
216− luaM_growvector(fs->L, f->code, fs->pc, f->sizecode, Instruction,
216+ luaM_growvector(fs->ls->L, f->code, fs->pc, f->sizecode, Instruction,
217217 MAX_INT, "opcodes");
218218 f->code[fs->pc] = i;
219219 /* save corresponding line information */
220− luaM_growvector(fs->L, f->lineinfo, fs->pc, f->sizelineinfo, int,
220+ luaM_growvector(fs->ls->L, f->lineinfo, fs->pc, f->sizelineinfo, int,
221221 MAX_INT, "opcodes");
222222 f->lineinfo[fs->pc] = fs->ls->lastline;
223223 return fs->pc++;
@@ -289,7 +289,7 @@ static void freeexp (FuncState *fs, expdesc *e) { · 65 unmodified lines
289289
290290
291291 static int addk (FuncState *fs, TValue *key, TValue *v) {
292− lua_State *L = fs->L;
292+ lua_State *L = fs->ls->L;
293293 TValue *idx = luaH_set(L, fs->h, key);
294294 Proto *f = fs->f;
295295 int k, oldsize;
@@ -304,6 +304,8 @@ static int addk (FuncState *fs, TValue *key, TValue *v) { · 8 unmodified lines
304304 /* constant not found; create a new entry */
305305 oldsize = f->sizek;
306306 k = fs->nk;
307+ /* numerical value does not need GC barrier;
308+ table has no metatable, so it does not need to invalidate cache */
307309 setnvalue(idx, cast_num(k));
308310 luaM_growvector(L, f->k, k, f->sizek, TValue, MAXARG_Ax, "constants");
309311 while (oldsize < f->sizek) setnilvalue(&f->k[oldsize++]);
@@ -316,14 +318,14 @@ static int addk (FuncState *fs, TValue *key, TValue *v) { · 6 unmodified lines
316318
317319 int luaK_stringK (FuncState *fs, TString *s) {
318320 TValue o;
319− setsvalue(fs->L, &o, s);
321+ setsvalue(fs->ls->L, &o, s);
320322 return addk(fs, &o, &o);
321323 }
322324
323325
324326 int luaK_numberK (FuncState *fs, lua_Number r) {
325327 int n;
326− lua_State *L = fs->L;
328+ lua_State *L = fs->ls->L;
327329 TValue o;
328330 setnvalue(&o, r);
329331 if (r == 0 || luai_numisnan(NULL, r)) { /* handle -0 and NaN */
@@ -350,7 +352,7 @@ static int nilK (FuncState *fs) { · 20 unmodified lines
350352 TValue k, v;
351353 setnilvalue(&v);
352354 /* cannot use nil as key; instead use table itself to represent nil */
353− sethvalue(fs->L, &k, fs->h);
355+ sethvalue(fs->ls->L, &k, fs->h);
354356 return addk(fs, &k, &v);
355357 }
356358
@@ -641,7 +643,7 @@ void luaK_goiftrue (FuncState *fs, expdesc *e) { · 284 unmodified lines
641643 }
642644
643645
644−static void luaK_goiffalse (FuncState *fs, expdesc *e) {
646+void luaK_goiffalse (FuncState *fs, expdesc *e) {
645647 int pc; /* pc of last jump */
646648 luaK_dischargevars(fs, e);
647649 switch (e->k) {