aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lapi.c22
-rw-r--r--lcode.c12
-rw-r--r--ldebug.c2
-rw-r--r--ldo.c6
-rw-r--r--ldump.c18
-rw-r--r--lfunc.c10
-rw-r--r--lgc.c58
-rw-r--r--liolib.c4
-rw-r--r--lobject.h136
-rw-r--r--lopcodes.h10
-rw-r--r--lstate.c4
-rw-r--r--lstate.h14
-rw-r--r--lstring.c10
-rw-r--r--lstring.h4
-rw-r--r--ltable.c46
-rw-r--r--ltests.c38
-rw-r--r--ltests.h2
-rw-r--r--ltm.c2
-rw-r--r--ltm.h2
-rw-r--r--lua.h4
-rw-r--r--lundump.c14
-rw-r--r--lvm.c24
22 files changed, 230 insertions, 212 deletions
diff --git a/lapi.c b/lapi.c
index 0e99abef..3e24781e 100644
--- a/lapi.c
+++ b/lapi.c
@@ -262,7 +262,7 @@ LUA_API int lua_type (lua_State *L, int idx) {
262 262
263LUA_API const char *lua_typename (lua_State *L, int t) { 263LUA_API const char *lua_typename (lua_State *L, int t) {
264 UNUSED(L); 264 UNUSED(L);
265 api_check(L, LUA_TNONE <= t && t < LUA_NUMTAGS, "invalid tag"); 265 api_check(L, LUA_TNONE <= t && t < LUA_NUMTYPES, "invalid type");
266 return ttypename(t); 266 return ttypename(t);
267} 267}
268 268
@@ -397,10 +397,10 @@ LUA_API const char *lua_tolstring (lua_State *L, int idx, size_t *len) {
397LUA_API lua_Unsigned lua_rawlen (lua_State *L, int idx) { 397LUA_API lua_Unsigned lua_rawlen (lua_State *L, int idx) {
398 const TValue *o = index2value(L, idx); 398 const TValue *o = index2value(L, idx);
399 switch (ttypetag(o)) { 399 switch (ttypetag(o)) {
400 case LUA_TSHRSTR: return tsvalue(o)->shrlen; 400 case LUA_VSHRSTR: return tsvalue(o)->shrlen;
401 case LUA_TLNGSTR: return tsvalue(o)->u.lnglen; 401 case LUA_VLNGSTR: return tsvalue(o)->u.lnglen;
402 case LUA_TUSERDATA: return uvalue(o)->len; 402 case LUA_VUSERDATA: return uvalue(o)->len;
403 case LUA_TTABLE: return luaH_getn(hvalue(o)); 403 case LUA_VTABLE: return luaH_getn(hvalue(o));
404 default: return 0; 404 default: return 0;
405 } 405 }
406} 406}
@@ -446,8 +446,8 @@ LUA_API lua_State *lua_tothread (lua_State *L, int idx) {
446LUA_API const void *lua_topointer (lua_State *L, int idx) { 446LUA_API const void *lua_topointer (lua_State *L, int idx) {
447 const TValue *o = index2value(L, idx); 447 const TValue *o = index2value(L, idx);
448 switch (ttypetag(o)) { 448 switch (ttypetag(o)) {
449 case LUA_TLCF: return cast_voidp(cast_sizet(fvalue(o))); 449 case LUA_VLCF: return cast_voidp(cast_sizet(fvalue(o)));
450 case LUA_TUSERDATA: case LUA_TLIGHTUSERDATA: 450 case LUA_VUSERDATA: case LUA_VLIGHTUSERDATA:
451 return touserdata(o); 451 return touserdata(o);
452 default: { 452 default: {
453 if (iscollectable(o)) 453 if (iscollectable(o))
@@ -1312,7 +1312,7 @@ LUA_API void *lua_newuserdatauv (lua_State *L, size_t size, int nuvalue) {
1312static const char *aux_upvalue (TValue *fi, int n, TValue **val, 1312static const char *aux_upvalue (TValue *fi, int n, TValue **val,
1313 GCObject **owner) { 1313 GCObject **owner) {
1314 switch (ttypetag(fi)) { 1314 switch (ttypetag(fi)) {
1315 case LUA_TCCL: { /* C closure */ 1315 case LUA_VCCL: { /* C closure */
1316 CClosure *f = clCvalue(fi); 1316 CClosure *f = clCvalue(fi);
1317 if (!(cast_uint(n) - 1u < cast_uint(f->nupvalues))) 1317 if (!(cast_uint(n) - 1u < cast_uint(f->nupvalues)))
1318 return NULL; /* 'n' not in [1, f->nupvalues] */ 1318 return NULL; /* 'n' not in [1, f->nupvalues] */
@@ -1320,7 +1320,7 @@ static const char *aux_upvalue (TValue *fi, int n, TValue **val,
1320 if (owner) *owner = obj2gco(f); 1320 if (owner) *owner = obj2gco(f);
1321 return ""; 1321 return "";
1322 } 1322 }
1323 case LUA_TLCL: { /* Lua closure */ 1323 case LUA_VLCL: { /* Lua closure */
1324 LClosure *f = clLvalue(fi); 1324 LClosure *f = clLvalue(fi);
1325 TString *name; 1325 TString *name;
1326 Proto *p = f->p; 1326 Proto *p = f->p;
@@ -1383,10 +1383,10 @@ static UpVal **getupvalref (lua_State *L, int fidx, int n, LClosure **pf) {
1383LUA_API void *lua_upvalueid (lua_State *L, int fidx, int n) { 1383LUA_API void *lua_upvalueid (lua_State *L, int fidx, int n) {
1384 TValue *fi = index2value(L, fidx); 1384 TValue *fi = index2value(L, fidx);
1385 switch (ttypetag(fi)) { 1385 switch (ttypetag(fi)) {
1386 case LUA_TLCL: { /* lua closure */ 1386 case LUA_VLCL: { /* lua closure */
1387 return *getupvalref(L, fidx, n, NULL); 1387 return *getupvalref(L, fidx, n, NULL);
1388 } 1388 }
1389 case LUA_TCCL: { /* C closure */ 1389 case LUA_VCCL: { /* C closure */
1390 CClosure *f = clCvalue(fi); 1390 CClosure *f = clCvalue(fi);
1391 api_check(L, 1 <= n && n <= f->nupvalues, "invalid upvalue index"); 1391 api_check(L, 1 <= n && n <= f->nupvalues, "invalid upvalue index");
1392 return &f->upvalue[n - 1]; 1392 return &f->upvalue[n - 1];
diff --git a/lcode.c b/lcode.c
index 72a8820b..332fdd00 100644
--- a/lcode.c
+++ b/lcode.c
@@ -678,22 +678,22 @@ static void luaK_float (FuncState *fs, int reg, lua_Number f) {
678*/ 678*/
679static void const2exp (TValue *v, expdesc *e) { 679static void const2exp (TValue *v, expdesc *e) {
680 switch (ttypetag(v)) { 680 switch (ttypetag(v)) {
681 case LUA_TNUMINT: 681 case LUA_VNUMINT:
682 e->k = VKINT; e->u.ival = ivalue(v); 682 e->k = VKINT; e->u.ival = ivalue(v);
683 break; 683 break;
684 case LUA_TNUMFLT: 684 case LUA_VNUMFLT:
685 e->k = VKFLT; e->u.nval = fltvalue(v); 685 e->k = VKFLT; e->u.nval = fltvalue(v);
686 break; 686 break;
687 case LUA_TFALSE: 687 case LUA_VFALSE:
688 e->k = VFALSE; 688 e->k = VFALSE;
689 break; 689 break;
690 case LUA_TTRUE: 690 case LUA_VTRUE:
691 e->k = VTRUE; 691 e->k = VTRUE;
692 break; 692 break;
693 case LUA_TNIL: 693 case LUA_VNIL:
694 e->k = VNIL; 694 e->k = VNIL;
695 break; 695 break;
696 case LUA_TSHRSTR: case LUA_TLNGSTR: 696 case LUA_VSHRSTR: case LUA_VLNGSTR:
697 e->k = VKSTR; e->u.strval = tsvalue(v); 697 e->k = VKSTR; e->u.strval = tsvalue(v);
698 break; 698 break;
699 default: lua_assert(0); 699 default: lua_assert(0);
diff --git a/ldebug.c b/ldebug.c
index c229f759..a1913c59 100644
--- a/ldebug.c
+++ b/ldebug.c
@@ -31,7 +31,7 @@
31 31
32 32
33 33
34#define noLuaClosure(f) ((f) == NULL || (f)->c.tt == LUA_TCCL) 34#define noLuaClosure(f) ((f) == NULL || (f)->c.tt == LUA_VCCL)
35 35
36 36
37/* Active Lua function (given call info) */ 37/* Active Lua function (given call info) */
diff --git a/ldo.c b/ldo.c
index 288aef13..64fe2915 100644
--- a/ldo.c
+++ b/ldo.c
@@ -459,10 +459,10 @@ void luaD_call (lua_State *L, StkId func, int nresults) {
459 lua_CFunction f; 459 lua_CFunction f;
460 retry: 460 retry:
461 switch (ttypetag(s2v(func))) { 461 switch (ttypetag(s2v(func))) {
462 case LUA_TCCL: /* C closure */ 462 case LUA_VCCL: /* C closure */
463 f = clCvalue(s2v(func))->f; 463 f = clCvalue(s2v(func))->f;
464 goto Cfunc; 464 goto Cfunc;
465 case LUA_TLCF: /* light C function */ 465 case LUA_VLCF: /* light C function */
466 f = fvalue(s2v(func)); 466 f = fvalue(s2v(func));
467 Cfunc: { 467 Cfunc: {
468 int n; /* number of returns */ 468 int n; /* number of returns */
@@ -485,7 +485,7 @@ void luaD_call (lua_State *L, StkId func, int nresults) {
485 luaD_poscall(L, ci, n); 485 luaD_poscall(L, ci, n);
486 break; 486 break;
487 } 487 }
488 case LUA_TLCL: { /* Lua function */ 488 case LUA_VLCL: { /* Lua function */
489 CallInfo *ci; 489 CallInfo *ci;
490 Proto *p = clLvalue(s2v(func))->p; 490 Proto *p = clLvalue(s2v(func))->p;
491 int narg = cast_int(L->top - func) - 1; /* number of real arguments */ 491 int narg = cast_int(L->top - func) - 1; /* number of real arguments */
diff --git a/ldump.c b/ldump.c
index 93cadbcc..4d29b94e 100644
--- a/ldump.c
+++ b/ldump.c
@@ -111,21 +111,21 @@ static void DumpConstants (const Proto *f, DumpState *D) {
111 DumpInt(n, D); 111 DumpInt(n, D);
112 for (i = 0; i < n; i++) { 112 for (i = 0; i < n; i++) {
113 const TValue *o = &f->k[i]; 113 const TValue *o = &f->k[i];
114 DumpByte(ttypetag(o), D); 114 int tt = ttypetag(o);
115 switch (ttypetag(o)) { 115 DumpByte(tt, D);
116 case LUA_TNIL: case LUA_TFALSE: case LUA_TTRUE: 116 switch (tt) {
117 break; 117 case LUA_VNUMFLT:
118 case LUA_TNUMFLT:
119 DumpNumber(fltvalue(o), D); 118 DumpNumber(fltvalue(o), D);
120 break; 119 break;
121 case LUA_TNUMINT: 120 case LUA_VNUMINT:
122 DumpInteger(ivalue(o), D); 121 DumpInteger(ivalue(o), D);
123 break; 122 break;
124 case LUA_TSHRSTR: 123 case LUA_VSHRSTR:
125 case LUA_TLNGSTR: 124 case LUA_VLNGSTR:
126 DumpString(tsvalue(o), D); 125 DumpString(tsvalue(o), D);
127 break; 126 break;
128 default: lua_assert(0); 127 default:
128 lua_assert(tt == LUA_VNIL || tt == LUA_VFALSE || tt == LUA_VTRUE);
129 } 129 }
130 } 130 }
131} 131}
diff --git a/lfunc.c b/lfunc.c
index 60689a7a..10100e5a 100644
--- a/lfunc.c
+++ b/lfunc.c
@@ -25,7 +25,7 @@
25 25
26 26
27CClosure *luaF_newCclosure (lua_State *L, int nupvals) { 27CClosure *luaF_newCclosure (lua_State *L, int nupvals) {
28 GCObject *o = luaC_newobj(L, LUA_TCCL, sizeCclosure(nupvals)); 28 GCObject *o = luaC_newobj(L, LUA_VCCL, sizeCclosure(nupvals));
29 CClosure *c = gco2ccl(o); 29 CClosure *c = gco2ccl(o);
30 c->nupvalues = cast_byte(nupvals); 30 c->nupvalues = cast_byte(nupvals);
31 return c; 31 return c;
@@ -33,7 +33,7 @@ CClosure *luaF_newCclosure (lua_State *L, int nupvals) {
33 33
34 34
35LClosure *luaF_newLclosure (lua_State *L, int nupvals) { 35LClosure *luaF_newLclosure (lua_State *L, int nupvals) {
36 GCObject *o = luaC_newobj(L, LUA_TLCL, sizeLclosure(nupvals)); 36 GCObject *o = luaC_newobj(L, LUA_VLCL, sizeLclosure(nupvals));
37 LClosure *c = gco2lcl(o); 37 LClosure *c = gco2lcl(o);
38 c->p = NULL; 38 c->p = NULL;
39 c->nupvalues = cast_byte(nupvals); 39 c->nupvalues = cast_byte(nupvals);
@@ -48,7 +48,7 @@ LClosure *luaF_newLclosure (lua_State *L, int nupvals) {
48void luaF_initupvals (lua_State *L, LClosure *cl) { 48void luaF_initupvals (lua_State *L, LClosure *cl) {
49 int i; 49 int i;
50 for (i = 0; i < cl->nupvalues; i++) { 50 for (i = 0; i < cl->nupvalues; i++) {
51 GCObject *o = luaC_newobj(L, LUA_TUPVAL, sizeof(UpVal)); 51 GCObject *o = luaC_newobj(L, LUA_VUPVAL, sizeof(UpVal));
52 UpVal *uv = gco2upv(o); 52 UpVal *uv = gco2upv(o);
53 uv->v = &uv->u.value; /* make it closed */ 53 uv->v = &uv->u.value; /* make it closed */
54 setnilvalue(uv->v); 54 setnilvalue(uv->v);
@@ -63,7 +63,7 @@ void luaF_initupvals (lua_State *L, LClosure *cl) {
63** open upvalues of 'L' after entry 'prev'. 63** open upvalues of 'L' after entry 'prev'.
64**/ 64**/
65static UpVal *newupval (lua_State *L, int tbc, StkId level, UpVal **prev) { 65static UpVal *newupval (lua_State *L, int tbc, StkId level, UpVal **prev) {
66 GCObject *o = luaC_newobj(L, LUA_TUPVAL, sizeof(UpVal)); 66 GCObject *o = luaC_newobj(L, LUA_VUPVAL, sizeof(UpVal));
67 UpVal *uv = gco2upv(o); 67 UpVal *uv = gco2upv(o);
68 UpVal *next = *prev; 68 UpVal *next = *prev;
69 uv->v = s2v(level); /* current value lives in the stack */ 69 uv->v = s2v(level); /* current value lives in the stack */
@@ -243,7 +243,7 @@ int luaF_close (lua_State *L, StkId level, int status) {
243 243
244 244
245Proto *luaF_newproto (lua_State *L) { 245Proto *luaF_newproto (lua_State *L) {
246 GCObject *o = luaC_newobj(L, LUA_TPROTO, sizeof(Proto)); 246 GCObject *o = luaC_newobj(L, LUA_VPROTO, sizeof(Proto));
247 Proto *f = gco2p(o); 247 Proto *f = gco2p(o);
248 f->k = NULL; 248 f->k = NULL;
249 f->sizek = 0; 249 f->sizek = 0;
diff --git a/lgc.c b/lgc.c
index db519c6d..e788843c 100644
--- a/lgc.c
+++ b/lgc.c
@@ -119,12 +119,12 @@ static void entersweep (lua_State *L);
119 119
120static GCObject **getgclist (GCObject *o) { 120static GCObject **getgclist (GCObject *o) {
121 switch (o->tt) { 121 switch (o->tt) {
122 case LUA_TTABLE: return &gco2t(o)->gclist; 122 case LUA_VTABLE: return &gco2t(o)->gclist;
123 case LUA_TLCL: return &gco2lcl(o)->gclist; 123 case LUA_VLCL: return &gco2lcl(o)->gclist;
124 case LUA_TCCL: return &gco2ccl(o)->gclist; 124 case LUA_VCCL: return &gco2ccl(o)->gclist;
125 case LUA_TTHREAD: return &gco2th(o)->gclist; 125 case LUA_VTHREAD: return &gco2th(o)->gclist;
126 case LUA_TPROTO: return &gco2p(o)->gclist; 126 case LUA_VPROTO: return &gco2p(o)->gclist;
127 case LUA_TUSERDATA: { 127 case LUA_VUSERDATA: {
128 Udata *u = gco2u(o); 128 Udata *u = gco2u(o);
129 lua_assert(u->nuvalue > 0); 129 lua_assert(u->nuvalue > 0);
130 return &u->gclist; 130 return &u->gclist;
@@ -268,19 +268,19 @@ GCObject *luaC_newobj (lua_State *L, int tt, size_t sz) {
268static void reallymarkobject (global_State *g, GCObject *o) { 268static void reallymarkobject (global_State *g, GCObject *o) {
269 white2gray(o); 269 white2gray(o);
270 switch (o->tt) { 270 switch (o->tt) {
271 case LUA_TSHRSTR: 271 case LUA_VSHRSTR:
272 case LUA_TLNGSTR: { 272 case LUA_VLNGSTR: {
273 gray2black(o); 273 gray2black(o);
274 break; 274 break;
275 } 275 }
276 case LUA_TUPVAL: { 276 case LUA_VUPVAL: {
277 UpVal *uv = gco2upv(o); 277 UpVal *uv = gco2upv(o);
278 if (!upisopen(uv)) /* open upvalues are kept gray */ 278 if (!upisopen(uv)) /* open upvalues are kept gray */
279 gray2black(o); 279 gray2black(o);
280 markvalue(g, uv->v); /* mark its content */ 280 markvalue(g, uv->v); /* mark its content */
281 break; 281 break;
282 } 282 }
283 case LUA_TUSERDATA: { 283 case LUA_VUSERDATA: {
284 Udata *u = gco2u(o); 284 Udata *u = gco2u(o);
285 if (u->nuvalue == 0) { /* no user values? */ 285 if (u->nuvalue == 0) { /* no user values? */
286 markobjectN(g, u->metatable); /* mark its metatable */ 286 markobjectN(g, u->metatable); /* mark its metatable */
@@ -289,8 +289,8 @@ static void reallymarkobject (global_State *g, GCObject *o) {
289 } 289 }
290 /* else... */ 290 /* else... */
291 } /* FALLTHROUGH */ 291 } /* FALLTHROUGH */
292 case LUA_TLCL: case LUA_TCCL: case LUA_TTABLE: 292 case LUA_VLCL: case LUA_VCCL: case LUA_VTABLE:
293 case LUA_TTHREAD: case LUA_TPROTO: { 293 case LUA_VTHREAD: case LUA_VPROTO: {
294 linkobjgclist(o, g->gray); 294 linkobjgclist(o, g->gray);
295 break; 295 break;
296 } 296 }
@@ -598,12 +598,12 @@ static lu_mem propagatemark (global_State *g) {
598 gray2black(o); 598 gray2black(o);
599 g->gray = *getgclist(o); /* remove from 'gray' list */ 599 g->gray = *getgclist(o); /* remove from 'gray' list */
600 switch (o->tt) { 600 switch (o->tt) {
601 case LUA_TTABLE: return traversetable(g, gco2t(o)); 601 case LUA_VTABLE: return traversetable(g, gco2t(o));
602 case LUA_TUSERDATA: return traverseudata(g, gco2u(o)); 602 case LUA_VUSERDATA: return traverseudata(g, gco2u(o));
603 case LUA_TLCL: return traverseLclosure(g, gco2lcl(o)); 603 case LUA_VLCL: return traverseLclosure(g, gco2lcl(o));
604 case LUA_TCCL: return traverseCclosure(g, gco2ccl(o)); 604 case LUA_VCCL: return traverseCclosure(g, gco2ccl(o));
605 case LUA_TPROTO: return traverseproto(g, gco2p(o)); 605 case LUA_VPROTO: return traverseproto(g, gco2p(o));
606 case LUA_TTHREAD: { 606 case LUA_VTHREAD: {
607 lua_State *th = gco2th(o); 607 lua_State *th = gco2th(o);
608 linkgclist(th, g->grayagain); /* insert into 'grayagain' list */ 608 linkgclist(th, g->grayagain); /* insert into 'grayagain' list */
609 black2gray(o); 609 black2gray(o);
@@ -710,34 +710,34 @@ static void freeupval (lua_State *L, UpVal *uv) {
710 710
711static void freeobj (lua_State *L, GCObject *o) { 711static void freeobj (lua_State *L, GCObject *o) {
712 switch (o->tt) { 712 switch (o->tt) {
713 case LUA_TPROTO: 713 case LUA_VPROTO:
714 luaF_freeproto(L, gco2p(o)); 714 luaF_freeproto(L, gco2p(o));
715 break; 715 break;
716 case LUA_TUPVAL: 716 case LUA_VUPVAL:
717 freeupval(L, gco2upv(o)); 717 freeupval(L, gco2upv(o));
718 break; 718 break;
719 case LUA_TLCL: 719 case LUA_VLCL:
720 luaM_freemem(L, o, sizeLclosure(gco2lcl(o)->nupvalues)); 720 luaM_freemem(L, o, sizeLclosure(gco2lcl(o)->nupvalues));
721 break; 721 break;
722 case LUA_TCCL: 722 case LUA_VCCL:
723 luaM_freemem(L, o, sizeCclosure(gco2ccl(o)->nupvalues)); 723 luaM_freemem(L, o, sizeCclosure(gco2ccl(o)->nupvalues));
724 break; 724 break;
725 case LUA_TTABLE: 725 case LUA_VTABLE:
726 luaH_free(L, gco2t(o)); 726 luaH_free(L, gco2t(o));
727 break; 727 break;
728 case LUA_TTHREAD: 728 case LUA_VTHREAD:
729 luaE_freethread(L, gco2th(o)); 729 luaE_freethread(L, gco2th(o));
730 break; 730 break;
731 case LUA_TUSERDATA: { 731 case LUA_VUSERDATA: {
732 Udata *u = gco2u(o); 732 Udata *u = gco2u(o);
733 luaM_freemem(L, o, sizeudata(u->nuvalue, u->len)); 733 luaM_freemem(L, o, sizeudata(u->nuvalue, u->len));
734 break; 734 break;
735 } 735 }
736 case LUA_TSHRSTR: 736 case LUA_VSHRSTR:
737 luaS_remove(L, gco2ts(o)); /* remove it from hash table */ 737 luaS_remove(L, gco2ts(o)); /* remove it from hash table */
738 luaM_freemem(L, o, sizelstring(gco2ts(o)->shrlen)); 738 luaM_freemem(L, o, sizelstring(gco2ts(o)->shrlen));
739 break; 739 break;
740 case LUA_TLNGSTR: 740 case LUA_VLNGSTR:
741 luaM_freemem(L, o, sizelstring(gco2ts(o)->u.lnglen)); 741 luaM_freemem(L, o, sizelstring(gco2ts(o)->u.lnglen));
742 break; 742 break;
743 default: lua_assert(0); 743 default: lua_assert(0);
@@ -1049,7 +1049,7 @@ static GCObject **correctgraylist (GCObject **p) {
1049 GCObject *curr; 1049 GCObject *curr;
1050 while ((curr = *p) != NULL) { 1050 while ((curr = *p) != NULL) {
1051 switch (curr->tt) { 1051 switch (curr->tt) {
1052 case LUA_TTABLE: case LUA_TUSERDATA: { 1052 case LUA_VTABLE: case LUA_VUSERDATA: {
1053 GCObject **next = getgclist(curr); 1053 GCObject **next = getgclist(curr);
1054 if (getage(curr) == G_TOUCHED1) { /* touched in this cycle? */ 1054 if (getage(curr) == G_TOUCHED1) { /* touched in this cycle? */
1055 lua_assert(isgray(curr)); 1055 lua_assert(isgray(curr));
@@ -1069,7 +1069,7 @@ static GCObject **correctgraylist (GCObject **p) {
1069 } 1069 }
1070 break; 1070 break;
1071 } 1071 }
1072 case LUA_TTHREAD: { 1072 case LUA_VTHREAD: {
1073 lua_State *th = gco2th(curr); 1073 lua_State *th = gco2th(curr);
1074 lua_assert(!isblack(th)); 1074 lua_assert(!isblack(th));
1075 if (iswhite(th)) /* new object? */ 1075 if (iswhite(th)) /* new object? */
diff --git a/liolib.c b/liolib.c
index d8b0a6f9..08d18397 100644
--- a/liolib.c
+++ b/liolib.c
@@ -215,7 +215,7 @@ static int f_close (lua_State *L) {
215 215
216static int io_close (lua_State *L) { 216static int io_close (lua_State *L) {
217 if (lua_isnone(L, 1)) /* no argument? */ 217 if (lua_isnone(L, 1)) /* no argument? */
218 lua_getfield(L, LUA_REGISTRYINDEX, IO_OUTPUT); /* use standard output */ 218 lua_getfield(L, LUA_REGISTRYINDEX, IO_OUTPUT); /* use default output */
219 return f_close(L); 219 return f_close(L);
220} 220}
221 221
@@ -296,7 +296,7 @@ static FILE *getiofile (lua_State *L, const char *findex) {
296 lua_getfield(L, LUA_REGISTRYINDEX, findex); 296 lua_getfield(L, LUA_REGISTRYINDEX, findex);
297 p = (LStream *)lua_touserdata(L, -1); 297 p = (LStream *)lua_touserdata(L, -1);
298 if (isclosed(p)) 298 if (isclosed(p))
299 luaL_error(L, "standard %s file is closed", findex + IOPREF_LEN); 299 luaL_error(L, "default %s file is closed", findex + IOPREF_LEN);
300 return p->f; 300 return p->f;
301} 301}
302 302
diff --git a/lobject.h b/lobject.h
index 62e4d05f..32542294 100644
--- a/lobject.h
+++ b/lobject.h
@@ -17,16 +17,16 @@
17 17
18 18
19/* 19/*
20** Extra tags for collectable non-values 20** Extra types for collectable non-values
21*/ 21*/
22#define LUA_TUPVAL LUA_NUMTAGS /* upvalues */ 22#define LUA_TUPVAL LUA_NUMTYPES /* upvalues */
23#define LUA_TPROTO (LUA_NUMTAGS+1) /* function prototypes */ 23#define LUA_TPROTO (LUA_NUMTYPES+1) /* function prototypes */
24 24
25 25
26/* 26/*
27** number of all possible tags (including LUA_TNONE) 27** number of all possible types (including LUA_TNONE)
28*/ 28*/
29#define LUA_TOTALTAGS (LUA_TPROTO + 2) 29#define LUA_TOTALTYPES (LUA_TPROTO + 2)
30 30
31 31
32/* 32/*
@@ -154,30 +154,28 @@ typedef StackValue *StkId;
154** =================================================================== 154** ===================================================================
155*/ 155*/
156 156
157/* macro to test for (any kind of) nil */ 157/* Standard nil */
158#define ttisnil(v) checktype((v), LUA_TNIL) 158#define LUA_VNIL makevariant(LUA_TNIL, 1)
159 159
160/* macro to test for a "pure" nil */ 160/* Empty slot (which might be different from a slot containing nil) */
161#define ttisstrictnil(o) checktag((o), LUA_TNIL) 161#define LUA_VEMPTY makevariant(LUA_TNIL, 2)
162 162
163/* Value returned for a key not found in a table (absent key) */
164#define LUA_VABSTKEY makevariant(LUA_TNIL, 3)
163 165
164#define setnilvalue(obj) settt_(obj, LUA_TNIL)
165 166
167/* macro to test for (any kind of) nil */
168#define ttisnil(v) checktype((v), LUA_TNIL)
166 169
167/*
168** Variant tag, used only in tables to signal an empty slot
169** (which might be different from a slot containing nil)
170*/
171#define LUA_TEMPTY makevariant(LUA_TNIL, 1)
172 170
173/* 171/* macro to test for a standard nil */
174** Variant used only in the value returned for a key not found in a 172#define ttisstrictnil(o) checktag((o), LUA_VNIL)
175** table (absent key). 173
176*/ 174
177#define LUA_TABSTKEY makevariant(LUA_TNIL, 2) 175#define setnilvalue(obj) settt_(obj, LUA_VNIL)
178 176
179 177
180#define isabstkey(v) checktag((v), LUA_TABSTKEY) 178#define isabstkey(v) checktag((v), LUA_VABSTKEY)
181 179
182 180
183/* 181/*
@@ -195,11 +193,11 @@ typedef StackValue *StkId;
195 193
196 194
197/* macro defining a value corresponding to an absent key */ 195/* macro defining a value corresponding to an absent key */
198#define ABSTKEYCONSTANT {NULL}, LUA_TABSTKEY 196#define ABSTKEYCONSTANT {NULL}, LUA_VABSTKEY
199 197
200 198
201/* mark an entry as empty */ 199/* mark an entry as empty */
202#define setempty(v) settt_(v, LUA_TEMPTY) 200#define setempty(v) settt_(v, LUA_VEMPTY)
203 201
204 202
205 203
@@ -213,19 +211,19 @@ typedef StackValue *StkId;
213*/ 211*/
214 212
215 213
216#define LUA_TFALSE makevariant(LUA_TBOOLEAN, 1) 214#define LUA_VFALSE makevariant(LUA_TBOOLEAN, 1)
217#define LUA_TTRUE makevariant(LUA_TBOOLEAN, 2) 215#define LUA_VTRUE makevariant(LUA_TBOOLEAN, 2)
218 216
219#define ttisboolean(o) checktype((o), LUA_TBOOLEAN) 217#define ttisboolean(o) checktype((o), LUA_TBOOLEAN)
220#define ttisfalse(o) checktag((o), LUA_TFALSE) 218#define ttisfalse(o) checktag((o), LUA_VFALSE)
221#define ttistrue(o) checktag((o), LUA_TTRUE) 219#define ttistrue(o) checktag((o), LUA_VTRUE)
222 220
223 221
224#define l_isfalse(o) (ttisfalse(o) || ttisnil(o)) 222#define l_isfalse(o) (ttisfalse(o) || ttisnil(o))
225 223
226 224
227#define setbfvalue(obj) settt_(obj, LUA_TFALSE) 225#define setbfvalue(obj) settt_(obj, LUA_VFALSE)
228#define setbtvalue(obj) settt_(obj, LUA_TTRUE) 226#define setbtvalue(obj) settt_(obj, LUA_VTRUE)
229 227
230/* }================================================================== */ 228/* }================================================================== */
231 229
@@ -236,13 +234,15 @@ typedef StackValue *StkId;
236** =================================================================== 234** ===================================================================
237*/ 235*/
238 236
239#define ttisthread(o) checktag((o), ctb(LUA_TTHREAD)) 237#define LUA_VTHREAD makevariant(LUA_TTHREAD, 1)
238
239#define ttisthread(o) checktag((o), ctb(LUA_VTHREAD))
240 240
241#define thvalue(o) check_exp(ttisthread(o), gco2th(val_(o).gc)) 241#define thvalue(o) check_exp(ttisthread(o), gco2th(val_(o).gc))
242 242
243#define setthvalue(L,obj,x) \ 243#define setthvalue(L,obj,x) \
244 { TValue *io = (obj); lua_State *x_ = (x); \ 244 { TValue *io = (obj); lua_State *x_ = (x); \
245 val_(io).gc = obj2gco(x_); settt_(io, ctb(LUA_TTHREAD)); \ 245 val_(io).gc = obj2gco(x_); settt_(io, ctb(LUA_VTHREAD)); \
246 checkliveness(L,io); } 246 checkliveness(L,io); }
247 247
248#define setthvalue2s(L,o,t) setthvalue(L,s2v(o),t) 248#define setthvalue2s(L,o,t) setthvalue(L,s2v(o),t)
@@ -295,12 +295,12 @@ typedef struct GCObject {
295*/ 295*/
296 296
297/* Variant tags for numbers */ 297/* Variant tags for numbers */
298#define LUA_TNUMINT makevariant(LUA_TNUMBER, 1) /* integer numbers */ 298#define LUA_VNUMINT makevariant(LUA_TNUMBER, 1) /* integer numbers */
299#define LUA_TNUMFLT makevariant(LUA_TNUMBER, 2) /* float numbers */ 299#define LUA_VNUMFLT makevariant(LUA_TNUMBER, 2) /* float numbers */
300 300
301#define ttisnumber(o) checktype((o), LUA_TNUMBER) 301#define ttisnumber(o) checktype((o), LUA_TNUMBER)
302#define ttisfloat(o) checktag((o), LUA_TNUMFLT) 302#define ttisfloat(o) checktag((o), LUA_VNUMFLT)
303#define ttisinteger(o) checktag((o), LUA_TNUMINT) 303#define ttisinteger(o) checktag((o), LUA_VNUMINT)
304 304
305#define nvalue(o) check_exp(ttisnumber(o), \ 305#define nvalue(o) check_exp(ttisnumber(o), \
306 (ttisinteger(o) ? cast_num(ivalue(o)) : fltvalue(o))) 306 (ttisinteger(o) ? cast_num(ivalue(o)) : fltvalue(o)))
@@ -311,13 +311,13 @@ typedef struct GCObject {
311#define ivalueraw(v) ((v).i) 311#define ivalueraw(v) ((v).i)
312 312
313#define setfltvalue(obj,x) \ 313#define setfltvalue(obj,x) \
314 { TValue *io=(obj); val_(io).n=(x); settt_(io, LUA_TNUMFLT); } 314 { TValue *io=(obj); val_(io).n=(x); settt_(io, LUA_VNUMFLT); }
315 315
316#define chgfltvalue(obj,x) \ 316#define chgfltvalue(obj,x) \
317 { TValue *io=(obj); lua_assert(ttisfloat(io)); val_(io).n=(x); } 317 { TValue *io=(obj); lua_assert(ttisfloat(io)); val_(io).n=(x); }
318 318
319#define setivalue(obj,x) \ 319#define setivalue(obj,x) \
320 { TValue *io=(obj); val_(io).i=(x); settt_(io, LUA_TNUMINT); } 320 { TValue *io=(obj); val_(io).i=(x); settt_(io, LUA_VNUMINT); }
321 321
322#define chgivalue(obj,x) \ 322#define chgivalue(obj,x) \
323 { TValue *io=(obj); lua_assert(ttisinteger(io)); val_(io).i=(x); } 323 { TValue *io=(obj); lua_assert(ttisinteger(io)); val_(io).i=(x); }
@@ -332,12 +332,12 @@ typedef struct GCObject {
332*/ 332*/
333 333
334/* Variant tags for strings */ 334/* Variant tags for strings */
335#define LUA_TSHRSTR makevariant(LUA_TSTRING, 1) /* short strings */ 335#define LUA_VSHRSTR makevariant(LUA_TSTRING, 1) /* short strings */
336#define LUA_TLNGSTR makevariant(LUA_TSTRING, 2) /* long strings */ 336#define LUA_VLNGSTR makevariant(LUA_TSTRING, 2) /* long strings */
337 337
338#define ttisstring(o) checktype((o), LUA_TSTRING) 338#define ttisstring(o) checktype((o), LUA_TSTRING)
339#define ttisshrstring(o) checktag((o), ctb(LUA_TSHRSTR)) 339#define ttisshrstring(o) checktag((o), ctb(LUA_VSHRSTR))
340#define ttislngstring(o) checktag((o), ctb(LUA_TLNGSTR)) 340#define ttislngstring(o) checktag((o), ctb(LUA_VLNGSTR))
341 341
342#define tsvalueraw(v) (gco2ts((v).gc)) 342#define tsvalueraw(v) (gco2ts((v).gc))
343 343
@@ -384,7 +384,7 @@ typedef struct TString {
384#define svalue(o) getstr(tsvalue(o)) 384#define svalue(o) getstr(tsvalue(o))
385 385
386/* get string length from 'TString *s' */ 386/* get string length from 'TString *s' */
387#define tsslen(s) ((s)->tt == LUA_TSHRSTR ? (s)->shrlen : (s)->u.lnglen) 387#define tsslen(s) ((s)->tt == LUA_VSHRSTR ? (s)->shrlen : (s)->u.lnglen)
388 388
389/* get string length from 'TValue *o' */ 389/* get string length from 'TValue *o' */
390#define vslen(o) tsslen(tsvalue(o)) 390#define vslen(o) tsslen(tsvalue(o))
@@ -398,8 +398,16 @@ typedef struct TString {
398** =================================================================== 398** ===================================================================
399*/ 399*/
400 400
401#define ttislightuserdata(o) checktag((o), LUA_TLIGHTUSERDATA) 401
402#define ttisfulluserdata(o) checktype((o), LUA_TUSERDATA) 402/*
403** Light userdata should be a variant of userdata, but for compatibility
404** reasons they are also different types.
405*/
406#define LUA_VLIGHTUSERDATA makevariant(LUA_TLIGHTUSERDATA, 1)
407#define LUA_VUSERDATA makevariant(LUA_TUSERDATA, 1)
408
409#define ttislightuserdata(o) checktag((o), LUA_VLIGHTUSERDATA)
410#define ttisfulluserdata(o) checktag((o), ctb(LUA_VUSERDATA))
403 411
404#define pvalue(o) check_exp(ttislightuserdata(o), val_(o).p) 412#define pvalue(o) check_exp(ttislightuserdata(o), val_(o).p)
405#define uvalue(o) check_exp(ttisfulluserdata(o), gco2u(val_(o).gc)) 413#define uvalue(o) check_exp(ttisfulluserdata(o), gco2u(val_(o).gc))
@@ -407,11 +415,11 @@ typedef struct TString {
407#define pvalueraw(v) ((v).p) 415#define pvalueraw(v) ((v).p)
408 416
409#define setpvalue(obj,x) \ 417#define setpvalue(obj,x) \
410 { TValue *io=(obj); val_(io).p=(x); settt_(io, LUA_TLIGHTUSERDATA); } 418 { TValue *io=(obj); val_(io).p=(x); settt_(io, LUA_VLIGHTUSERDATA); }
411 419
412#define setuvalue(L,obj,x) \ 420#define setuvalue(L,obj,x) \
413 { TValue *io = (obj); Udata *x_ = (x); \ 421 { TValue *io = (obj); Udata *x_ = (x); \
414 val_(io).gc = obj2gco(x_); settt_(io, ctb(LUA_TUSERDATA)); \ 422 val_(io).gc = obj2gco(x_); settt_(io, ctb(LUA_VUSERDATA)); \
415 checkliveness(L,io); } 423 checkliveness(L,io); }
416 424
417 425
@@ -474,6 +482,9 @@ typedef struct Udata0 {
474** =================================================================== 482** ===================================================================
475*/ 483*/
476 484
485#define LUA_VPROTO makevariant(LUA_TPROTO, 1)
486
487
477/* 488/*
478** Description of an upvalue for function prototypes 489** Description of an upvalue for function prototypes
479*/ 490*/
@@ -548,16 +559,19 @@ typedef struct Proto {
548** =================================================================== 559** ===================================================================
549*/ 560*/
550 561
562#define LUA_VUPVAL makevariant(LUA_TUPVAL, 1)
563
564
551/* Variant tags for functions */ 565/* Variant tags for functions */
552#define LUA_TLCL makevariant(LUA_TFUNCTION, 1) /* Lua closure */ 566#define LUA_VLCL makevariant(LUA_TFUNCTION, 1) /* Lua closure */
553#define LUA_TLCF makevariant(LUA_TFUNCTION, 2) /* light C function */ 567#define LUA_VLCF makevariant(LUA_TFUNCTION, 2) /* light C function */
554#define LUA_TCCL makevariant(LUA_TFUNCTION, 3) /* C closure */ 568#define LUA_VCCL makevariant(LUA_TFUNCTION, 3) /* C closure */
555 569
556#define ttisfunction(o) checktype(o, LUA_TFUNCTION) 570#define ttisfunction(o) checktype(o, LUA_TFUNCTION)
557#define ttisclosure(o) ((rawtt(o) & 0x1F) == LUA_TLCL) 571#define ttisclosure(o) ((rawtt(o) & 0x1F) == LUA_VLCL)
558#define ttisLclosure(o) checktag((o), ctb(LUA_TLCL)) 572#define ttisLclosure(o) checktag((o), ctb(LUA_VLCL))
559#define ttislcf(o) checktag((o), LUA_TLCF) 573#define ttislcf(o) checktag((o), LUA_VLCF)
560#define ttisCclosure(o) checktag((o), ctb(LUA_TCCL)) 574#define ttisCclosure(o) checktag((o), ctb(LUA_VCCL))
561 575
562#define isLfunction(o) ttisLclosure(o) 576#define isLfunction(o) ttisLclosure(o)
563 577
@@ -570,17 +584,17 @@ typedef struct Proto {
570 584
571#define setclLvalue(L,obj,x) \ 585#define setclLvalue(L,obj,x) \
572 { TValue *io = (obj); LClosure *x_ = (x); \ 586 { TValue *io = (obj); LClosure *x_ = (x); \
573 val_(io).gc = obj2gco(x_); settt_(io, ctb(LUA_TLCL)); \ 587 val_(io).gc = obj2gco(x_); settt_(io, ctb(LUA_VLCL)); \
574 checkliveness(L,io); } 588 checkliveness(L,io); }
575 589
576#define setclLvalue2s(L,o,cl) setclLvalue(L,s2v(o),cl) 590#define setclLvalue2s(L,o,cl) setclLvalue(L,s2v(o),cl)
577 591
578#define setfvalue(obj,x) \ 592#define setfvalue(obj,x) \
579 { TValue *io=(obj); val_(io).f=(x); settt_(io, LUA_TLCF); } 593 { TValue *io=(obj); val_(io).f=(x); settt_(io, LUA_VLCF); }
580 594
581#define setclCvalue(L,obj,x) \ 595#define setclCvalue(L,obj,x) \
582 { TValue *io = (obj); CClosure *x_ = (x); \ 596 { TValue *io = (obj); CClosure *x_ = (x); \
583 val_(io).gc = obj2gco(x_); settt_(io, ctb(LUA_TCCL)); \ 597 val_(io).gc = obj2gco(x_); settt_(io, ctb(LUA_VCCL)); \
584 checkliveness(L,io); } 598 checkliveness(L,io); }
585 599
586 600
@@ -636,13 +650,15 @@ typedef union Closure {
636** =================================================================== 650** ===================================================================
637*/ 651*/
638 652
639#define ttistable(o) checktag((o), ctb(LUA_TTABLE)) 653#define LUA_VTABLE makevariant(LUA_TTABLE, 1)
654
655#define ttistable(o) checktag((o), ctb(LUA_VTABLE))
640 656
641#define hvalue(o) check_exp(ttistable(o), gco2t(val_(o).gc)) 657#define hvalue(o) check_exp(ttistable(o), gco2t(val_(o).gc))
642 658
643#define sethvalue(L,obj,x) \ 659#define sethvalue(L,obj,x) \
644 { TValue *io = (obj); Table *x_ = (x); \ 660 { TValue *io = (obj); Table *x_ = (x); \
645 val_(io).gc = obj2gco(x_); settt_(io, ctb(LUA_TTABLE)); \ 661 val_(io).gc = obj2gco(x_); settt_(io, ctb(LUA_VTABLE)); \
646 checkliveness(L,io); } 662 checkliveness(L,io); }
647 663
648#define sethvalue2s(L,o,h) sethvalue(L,s2v(o),h) 664#define sethvalue2s(L,o,h) sethvalue(L,s2v(o),h)
@@ -713,9 +729,9 @@ typedef struct Table {
713#define keyval(node) ((node)->u.key_val) 729#define keyval(node) ((node)->u.key_val)
714 730
715#define keyisnil(node) (keytt(node) == LUA_TNIL) 731#define keyisnil(node) (keytt(node) == LUA_TNIL)
716#define keyisinteger(node) (keytt(node) == LUA_TNUMINT) 732#define keyisinteger(node) (keytt(node) == LUA_VNUMINT)
717#define keyival(node) (keyval(node).i) 733#define keyival(node) (keyval(node).i)
718#define keyisshrstr(node) (keytt(node) == ctb(LUA_TSHRSTR)) 734#define keyisshrstr(node) (keytt(node) == ctb(LUA_VSHRSTR))
719#define keystrval(node) (gco2ts(keyval(node).gc)) 735#define keystrval(node) (gco2ts(keyval(node).gc))
720 736
721#define setnilkey(node) (keytt(node) = LUA_TNIL) 737#define setnilkey(node) (keytt(node) = LUA_TNIL)
diff --git a/lopcodes.h b/lopcodes.h
index f512f15a..8fd52d18 100644
--- a/lopcodes.h
+++ b/lopcodes.h
@@ -17,11 +17,11 @@
17 17
18 3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 18 3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0
19 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 19 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
20iABC C(8) | B(8) |k| A(8) | Op(7) | 20iABC C(8) | B(8) |k| A(8) | Op(7) |
21iABx Bx(17) | A(8) | Op(7) | 21iABx Bx(17) | A(8) | Op(7) |
22iAsBx sBx (signed)(17) | A(8) | Op(7) | 22iAsBx sBx (signed)(17) | A(8) | Op(7) |
23iAx Ax(25) | Op(7) | 23iAx Ax(25) | Op(7) |
24isJ sJ(25) | Op(7) | 24isJ sJ(25) | Op(7) |
25 25
26 A signed argument is represented in excess K: the represented value is 26 A signed argument is represented in excess K: the represented value is
27 the written unsigned value minus K, where K is half the maximum for the 27 the written unsigned value minus K, where K is half the maximum for the
diff --git a/lstate.c b/lstate.c
index 4864a979..7770e314 100644
--- a/lstate.c
+++ b/lstate.c
@@ -318,7 +318,7 @@ LUA_API lua_State *lua_newthread (lua_State *L) {
318 /* create new thread */ 318 /* create new thread */
319 L1 = &cast(LX *, luaM_newobject(L, LUA_TTHREAD, sizeof(LX)))->l; 319 L1 = &cast(LX *, luaM_newobject(L, LUA_TTHREAD, sizeof(LX)))->l;
320 L1->marked = luaC_white(g); 320 L1->marked = luaC_white(g);
321 L1->tt = LUA_TTHREAD; 321 L1->tt = LUA_VTHREAD;
322 /* link it on list 'allgc' */ 322 /* link it on list 'allgc' */
323 L1->next = g->allgc; 323 L1->next = g->allgc;
324 g->allgc = obj2gco(L1); 324 g->allgc = obj2gco(L1);
@@ -382,7 +382,7 @@ LUA_API lua_State *lua_newstate (lua_Alloc f, void *ud) {
382 if (l == NULL) return NULL; 382 if (l == NULL) return NULL;
383 L = &l->l.l; 383 L = &l->l.l;
384 g = &l->g; 384 g = &l->g;
385 L->tt = LUA_TTHREAD; 385 L->tt = LUA_VTHREAD;
386 g->currentwhite = bitmask(WHITE0BIT); 386 g->currentwhite = bitmask(WHITE0BIT);
387 L->marked = luaC_white(g); 387 L->marked = luaC_white(g);
388 preinit_thread(L, g); 388 preinit_thread(L, g);
diff --git a/lstate.h b/lstate.h
index 638c1e5c..df9148eb 100644
--- a/lstate.h
+++ b/lstate.h
@@ -327,15 +327,15 @@ union GCUnion {
327/* macros to convert a GCObject into a specific value */ 327/* macros to convert a GCObject into a specific value */
328#define gco2ts(o) \ 328#define gco2ts(o) \
329 check_exp(novariant((o)->tt) == LUA_TSTRING, &((cast_u(o))->ts)) 329 check_exp(novariant((o)->tt) == LUA_TSTRING, &((cast_u(o))->ts))
330#define gco2u(o) check_exp((o)->tt == LUA_TUSERDATA, &((cast_u(o))->u)) 330#define gco2u(o) check_exp((o)->tt == LUA_VUSERDATA, &((cast_u(o))->u))
331#define gco2lcl(o) check_exp((o)->tt == LUA_TLCL, &((cast_u(o))->cl.l)) 331#define gco2lcl(o) check_exp((o)->tt == LUA_VLCL, &((cast_u(o))->cl.l))
332#define gco2ccl(o) check_exp((o)->tt == LUA_TCCL, &((cast_u(o))->cl.c)) 332#define gco2ccl(o) check_exp((o)->tt == LUA_VCCL, &((cast_u(o))->cl.c))
333#define gco2cl(o) \ 333#define gco2cl(o) \
334 check_exp(novariant((o)->tt) == LUA_TFUNCTION, &((cast_u(o))->cl)) 334 check_exp(novariant((o)->tt) == LUA_TFUNCTION, &((cast_u(o))->cl))
335#define gco2t(o) check_exp((o)->tt == LUA_TTABLE, &((cast_u(o))->h)) 335#define gco2t(o) check_exp((o)->tt == LUA_VTABLE, &((cast_u(o))->h))
336#define gco2p(o) check_exp((o)->tt == LUA_TPROTO, &((cast_u(o))->p)) 336#define gco2p(o) check_exp((o)->tt == LUA_VPROTO, &((cast_u(o))->p))
337#define gco2th(o) check_exp((o)->tt == LUA_TTHREAD, &((cast_u(o))->th)) 337#define gco2th(o) check_exp((o)->tt == LUA_VTHREAD, &((cast_u(o))->th))
338#define gco2upv(o) check_exp((o)->tt == LUA_TUPVAL, &((cast_u(o))->upv)) 338#define gco2upv(o) check_exp((o)->tt == LUA_VUPVAL, &((cast_u(o))->upv))
339 339
340 340
341/* 341/*
diff --git a/lstring.c b/lstring.c
index 6ba798d9..a6ffbdd0 100644
--- a/lstring.c
+++ b/lstring.c
@@ -43,7 +43,7 @@
43*/ 43*/
44int luaS_eqlngstr (TString *a, TString *b) { 44int luaS_eqlngstr (TString *a, TString *b) {
45 size_t len = a->u.lnglen; 45 size_t len = a->u.lnglen;
46 lua_assert(a->tt == LUA_TLNGSTR && b->tt == LUA_TLNGSTR); 46 lua_assert(a->tt == LUA_VLNGSTR && b->tt == LUA_VLNGSTR);
47 return (a == b) || /* same instance or... */ 47 return (a == b) || /* same instance or... */
48 ((len == b->u.lnglen) && /* equal length and ... */ 48 ((len == b->u.lnglen) && /* equal length and ... */
49 (memcmp(getstr(a), getstr(b), len) == 0)); /* equal contents */ 49 (memcmp(getstr(a), getstr(b), len) == 0)); /* equal contents */
@@ -60,7 +60,7 @@ unsigned int luaS_hash (const char *str, size_t l, unsigned int seed) {
60 60
61 61
62unsigned int luaS_hashlongstr (TString *ts) { 62unsigned int luaS_hashlongstr (TString *ts) {
63 lua_assert(ts->tt == LUA_TLNGSTR); 63 lua_assert(ts->tt == LUA_VLNGSTR);
64 if (ts->extra == 0) { /* no hash? */ 64 if (ts->extra == 0) { /* no hash? */
65 ts->hash = luaS_hash(getstr(ts), ts->u.lnglen, ts->hash); 65 ts->hash = luaS_hash(getstr(ts), ts->u.lnglen, ts->hash);
66 ts->extra = 1; /* now it has its hash */ 66 ts->extra = 1; /* now it has its hash */
@@ -165,7 +165,7 @@ static TString *createstrobj (lua_State *L, size_t l, int tag, unsigned int h) {
165 165
166 166
167TString *luaS_createlngstrobj (lua_State *L, size_t l) { 167TString *luaS_createlngstrobj (lua_State *L, size_t l) {
168 TString *ts = createstrobj(L, l, LUA_TLNGSTR, G(L)->seed); 168 TString *ts = createstrobj(L, l, LUA_VLNGSTR, G(L)->seed);
169 ts->u.lnglen = l; 169 ts->u.lnglen = l;
170 return ts; 170 return ts;
171} 171}
@@ -215,7 +215,7 @@ static TString *internshrstr (lua_State *L, const char *str, size_t l) {
215 growstrtab(L, tb); 215 growstrtab(L, tb);
216 list = &tb->hash[lmod(h, tb->size)]; /* rehash with new size */ 216 list = &tb->hash[lmod(h, tb->size)]; /* rehash with new size */
217 } 217 }
218 ts = createstrobj(L, l, LUA_TSHRSTR, h); 218 ts = createstrobj(L, l, LUA_VSHRSTR, h);
219 memcpy(getstr(ts), str, l * sizeof(char)); 219 memcpy(getstr(ts), str, l * sizeof(char));
220 ts->shrlen = cast_byte(l); 220 ts->shrlen = cast_byte(l);
221 ts->u.hnext = *list; 221 ts->u.hnext = *list;
@@ -271,7 +271,7 @@ Udata *luaS_newudata (lua_State *L, size_t s, int nuvalue) {
271 GCObject *o; 271 GCObject *o;
272 if (unlikely(s > MAX_SIZE - udatamemoffset(nuvalue))) 272 if (unlikely(s > MAX_SIZE - udatamemoffset(nuvalue)))
273 luaM_toobig(L); 273 luaM_toobig(L);
274 o = luaC_newobj(L, LUA_TUSERDATA, sizeudata(nuvalue, s)); 274 o = luaC_newobj(L, LUA_VUSERDATA, sizeudata(nuvalue, s));
275 u = gco2u(o); 275 u = gco2u(o);
276 u->len = s; 276 u->len = s;
277 u->nuvalue = nuvalue; 277 u->nuvalue = nuvalue;
diff --git a/lstring.h b/lstring.h
index b2550218..c23d6874 100644
--- a/lstring.h
+++ b/lstring.h
@@ -28,13 +28,13 @@
28/* 28/*
29** test whether a string is a reserved word 29** test whether a string is a reserved word
30*/ 30*/
31#define isreserved(s) ((s)->tt == LUA_TSHRSTR && (s)->extra > 0) 31#define isreserved(s) ((s)->tt == LUA_VSHRSTR && (s)->extra > 0)
32 32
33 33
34/* 34/*
35** equality for short strings, which are always internalized 35** equality for short strings, which are always internalized
36*/ 36*/
37#define eqshrstr(a,b) check_exp((a)->tt == LUA_TSHRSTR, (a) == (b)) 37#define eqshrstr(a,b) check_exp((a)->tt == LUA_VSHRSTR, (a) == (b))
38 38
39 39
40LUAI_FUNC unsigned int luaS_hash (const char *str, size_t l, unsigned int seed); 40LUAI_FUNC unsigned int luaS_hash (const char *str, size_t l, unsigned int seed);
diff --git a/ltable.c b/ltable.c
index ebd45dda..d7eb69a2 100644
--- a/ltable.c
+++ b/ltable.c
@@ -88,8 +88,8 @@
88#define dummynode (&dummynode_) 88#define dummynode (&dummynode_)
89 89
90static const Node dummynode_ = { 90static const Node dummynode_ = {
91 {{NULL}, LUA_TEMPTY, /* value's value and type */ 91 {{NULL}, LUA_VEMPTY, /* value's value and type */
92 LUA_TNIL, 0, {NULL}} /* key type, next, and key value */ 92 LUA_VNIL, 0, {NULL}} /* key type, next, and key value */
93}; 93};
94 94
95 95
@@ -135,21 +135,21 @@ static int l_hashfloat (lua_Number n) {
135*/ 135*/
136static Node *mainposition (const Table *t, int ktt, const Value *kvl) { 136static Node *mainposition (const Table *t, int ktt, const Value *kvl) {
137 switch (withvariant(ktt)) { 137 switch (withvariant(ktt)) {
138 case LUA_TNUMINT: 138 case LUA_VNUMINT:
139 return hashint(t, ivalueraw(*kvl)); 139 return hashint(t, ivalueraw(*kvl));
140 case LUA_TNUMFLT: 140 case LUA_VNUMFLT:
141 return hashmod(t, l_hashfloat(fltvalueraw(*kvl))); 141 return hashmod(t, l_hashfloat(fltvalueraw(*kvl)));
142 case LUA_TSHRSTR: 142 case LUA_VSHRSTR:
143 return hashstr(t, tsvalueraw(*kvl)); 143 return hashstr(t, tsvalueraw(*kvl));
144 case LUA_TLNGSTR: 144 case LUA_VLNGSTR:
145 return hashpow2(t, luaS_hashlongstr(tsvalueraw(*kvl))); 145 return hashpow2(t, luaS_hashlongstr(tsvalueraw(*kvl)));
146 case LUA_TFALSE: 146 case LUA_VFALSE:
147 return hashboolean(t, 0); 147 return hashboolean(t, 0);
148 case LUA_TTRUE: 148 case LUA_VTRUE:
149 return hashboolean(t, 1); 149 return hashboolean(t, 1);
150 case LUA_TLIGHTUSERDATA: 150 case LUA_VLIGHTUSERDATA:
151 return hashpointer(t, pvalueraw(*kvl)); 151 return hashpointer(t, pvalueraw(*kvl));
152 case LUA_TLCF: 152 case LUA_VLCF:
153 return hashpointer(t, fvalueraw(*kvl)); 153 return hashpointer(t, fvalueraw(*kvl));
154 default: 154 default:
155 return hashpointer(t, gcvalueraw(*kvl)); 155 return hashpointer(t, gcvalueraw(*kvl));
@@ -177,17 +177,17 @@ static int equalkey (const TValue *k1, const Node *n2) {
177 if (rawtt(k1) != keytt(n2)) /* not the same variants? */ 177 if (rawtt(k1) != keytt(n2)) /* not the same variants? */
178 return 0; /* cannot be same key */ 178 return 0; /* cannot be same key */
179 switch (ttypetag(k1)) { 179 switch (ttypetag(k1)) {
180 case LUA_TNIL: case LUA_TFALSE: case LUA_TTRUE: 180 case LUA_VNIL: case LUA_VFALSE: case LUA_VTRUE:
181 return 1; 181 return 1;
182 case LUA_TNUMINT: 182 case LUA_VNUMINT:
183 return (ivalue(k1) == keyival(n2)); 183 return (ivalue(k1) == keyival(n2));
184 case LUA_TNUMFLT: 184 case LUA_VNUMFLT:
185 return luai_numeq(fltvalue(k1), fltvalueraw(keyval(n2))); 185 return luai_numeq(fltvalue(k1), fltvalueraw(keyval(n2)));
186 case LUA_TLIGHTUSERDATA: 186 case LUA_VLIGHTUSERDATA:
187 return pvalue(k1) == pvalueraw(keyval(n2)); 187 return pvalue(k1) == pvalueraw(keyval(n2));
188 case LUA_TLCF: 188 case LUA_VLCF:
189 return fvalue(k1) == fvalueraw(keyval(n2)); 189 return fvalue(k1) == fvalueraw(keyval(n2));
190 case LUA_TLNGSTR: 190 case LUA_VLNGSTR:
191 return luaS_eqlngstr(tsvalue(k1), keystrval(n2)); 191 return luaS_eqlngstr(tsvalue(k1), keystrval(n2));
192 default: 192 default:
193 return gcvalue(k1) == gcvalueraw(keyval(n2)); 193 return gcvalue(k1) == gcvalueraw(keyval(n2));
@@ -580,7 +580,7 @@ static void rehash (lua_State *L, Table *t, const TValue *ek) {
580 580
581 581
582Table *luaH_new (lua_State *L) { 582Table *luaH_new (lua_State *L) {
583 GCObject *o = luaC_newobj(L, LUA_TTABLE, sizeof(Table)); 583 GCObject *o = luaC_newobj(L, LUA_VTABLE, sizeof(Table));
584 Table *t = gco2t(o); 584 Table *t = gco2t(o);
585 t->metatable = NULL; 585 t->metatable = NULL;
586 t->flags = cast_byte(~0); 586 t->flags = cast_byte(~0);
@@ -710,7 +710,7 @@ const TValue *luaH_getint (Table *t, lua_Integer key) {
710*/ 710*/
711const TValue *luaH_getshortstr (Table *t, TString *key) { 711const TValue *luaH_getshortstr (Table *t, TString *key) {
712 Node *n = hashstr(t, key); 712 Node *n = hashstr(t, key);
713 lua_assert(key->tt == LUA_TSHRSTR); 713 lua_assert(key->tt == LUA_VSHRSTR);
714 for (;;) { /* check whether 'key' is somewhere in the chain */ 714 for (;;) { /* check whether 'key' is somewhere in the chain */
715 if (keyisshrstr(n) && eqshrstr(keystrval(n), key)) 715 if (keyisshrstr(n) && eqshrstr(keystrval(n), key))
716 return gval(n); /* that's it */ 716 return gval(n); /* that's it */
@@ -725,7 +725,7 @@ const TValue *luaH_getshortstr (Table *t, TString *key) {
725 725
726 726
727const TValue *luaH_getstr (Table *t, TString *key) { 727const TValue *luaH_getstr (Table *t, TString *key) {
728 if (key->tt == LUA_TSHRSTR) 728 if (key->tt == LUA_VSHRSTR)
729 return luaH_getshortstr(t, key); 729 return luaH_getshortstr(t, key);
730 else { /* for long strings, use generic case */ 730 else { /* for long strings, use generic case */
731 TValue ko; 731 TValue ko;
@@ -740,10 +740,10 @@ const TValue *luaH_getstr (Table *t, TString *key) {
740*/ 740*/
741const TValue *luaH_get (Table *t, const TValue *key) { 741const TValue *luaH_get (Table *t, const TValue *key) {
742 switch (ttypetag(key)) { 742 switch (ttypetag(key)) {
743 case LUA_TSHRSTR: return luaH_getshortstr(t, tsvalue(key)); 743 case LUA_VSHRSTR: return luaH_getshortstr(t, tsvalue(key));
744 case LUA_TNUMINT: return luaH_getint(t, ivalue(key)); 744 case LUA_VNUMINT: return luaH_getint(t, ivalue(key));
745 case LUA_TNIL: return &absentkey; 745 case LUA_VNIL: return &absentkey;
746 case LUA_TNUMFLT: { 746 case LUA_VNUMFLT: {
747 lua_Integer k; 747 lua_Integer k;
748 if (luaV_flttointeger(fltvalue(key), &k, F2Ieq)) /* integral index? */ 748 if (luaV_flttointeger(fltvalue(key), &k, F2Ieq)) /* integral index? */
749 return luaH_getint(t, k); /* use specialized version */ 749 return luaH_getint(t, k); /* use specialized version */
diff --git a/ltests.c b/ltests.c
index e9b28b14..acabc6b6 100644
--- a/ltests.c
+++ b/ltests.c
@@ -303,7 +303,7 @@ static void printobj (global_State *g, GCObject *o) {
303 ttypename(novariant(o->tt)), (void *)o, 303 ttypename(novariant(o->tt)), (void *)o,
304 isdead(g,o) ? 'd' : isblack(o) ? 'b' : iswhite(o) ? 'w' : 'g', 304 isdead(g,o) ? 'd' : isblack(o) ? 'b' : iswhite(o) ? 'w' : 'g',
305 "ns01oTt"[getage(o)], o->marked); 305 "ns01oTt"[getage(o)], o->marked);
306 if (o->tt == LUA_TSHRSTR || o->tt == LUA_TLNGSTR) 306 if (o->tt == LUA_VSHRSTR || o->tt == LUA_VLNGSTR)
307 printf(" '%s'", getstr(gco2ts(o))); 307 printf(" '%s'", getstr(gco2ts(o)));
308} 308}
309 309
@@ -435,36 +435,36 @@ static void checkstack (global_State *g, lua_State *L1) {
435 435
436static void checkrefs (global_State *g, GCObject *o) { 436static void checkrefs (global_State *g, GCObject *o) {
437 switch (o->tt) { 437 switch (o->tt) {
438 case LUA_TUSERDATA: { 438 case LUA_VUSERDATA: {
439 checkudata(g, gco2u(o)); 439 checkudata(g, gco2u(o));
440 break; 440 break;
441 } 441 }
442 case LUA_TUPVAL: { 442 case LUA_VUPVAL: {
443 checkvalref(g, o, gco2upv(o)->v); 443 checkvalref(g, o, gco2upv(o)->v);
444 break; 444 break;
445 } 445 }
446 case LUA_TTABLE: { 446 case LUA_VTABLE: {
447 checktable(g, gco2t(o)); 447 checktable(g, gco2t(o));
448 break; 448 break;
449 } 449 }
450 case LUA_TTHREAD: { 450 case LUA_VTHREAD: {
451 checkstack(g, gco2th(o)); 451 checkstack(g, gco2th(o));
452 break; 452 break;
453 } 453 }
454 case LUA_TLCL: { 454 case LUA_VLCL: {
455 checkLclosure(g, gco2lcl(o)); 455 checkLclosure(g, gco2lcl(o));
456 break; 456 break;
457 } 457 }
458 case LUA_TCCL: { 458 case LUA_VCCL: {
459 checkCclosure(g, gco2ccl(o)); 459 checkCclosure(g, gco2ccl(o));
460 break; 460 break;
461 } 461 }
462 case LUA_TPROTO: { 462 case LUA_VPROTO: {
463 checkproto(g, gco2p(o)); 463 checkproto(g, gco2p(o));
464 break; 464 break;
465 } 465 }
466 case LUA_TSHRSTR: 466 case LUA_VSHRSTR:
467 case LUA_TLNGSTR: { 467 case LUA_VLNGSTR: {
468 lua_assert(!isgray(o)); /* strings are never gray */ 468 lua_assert(!isgray(o)); /* strings are never gray */
469 break; 469 break;
470 } 470 }
@@ -497,8 +497,8 @@ static void checkobject (global_State *g, GCObject *o, int maybedead,
497 lua_assert(isblack(o) || 497 lua_assert(isblack(o) ||
498 getage(o) == G_TOUCHED1 || 498 getage(o) == G_TOUCHED1 ||
499 getage(o) == G_OLD0 || 499 getage(o) == G_OLD0 ||
500 o->tt == LUA_TTHREAD || 500 o->tt == LUA_VTHREAD ||
501 (o->tt == LUA_TUPVAL && upisopen(gco2upv(o)))); 501 (o->tt == LUA_VUPVAL && upisopen(gco2upv(o))));
502 } 502 }
503 } 503 }
504 checkrefs(g, o); 504 checkrefs(g, o);
@@ -511,11 +511,11 @@ static void checkgraylist (global_State *g, GCObject *o) {
511 while (o) { 511 while (o) {
512 lua_assert(isgray(o) || getage(o) == G_TOUCHED2); 512 lua_assert(isgray(o) || getage(o) == G_TOUCHED2);
513 switch (o->tt) { 513 switch (o->tt) {
514 case LUA_TTABLE: o = gco2t(o)->gclist; break; 514 case LUA_VTABLE: o = gco2t(o)->gclist; break;
515 case LUA_TLCL: o = gco2lcl(o)->gclist; break; 515 case LUA_VLCL: o = gco2lcl(o)->gclist; break;
516 case LUA_TCCL: o = gco2ccl(o)->gclist; break; 516 case LUA_VCCL: o = gco2ccl(o)->gclist; break;
517 case LUA_TTHREAD: o = gco2th(o)->gclist; break; 517 case LUA_VTHREAD: o = gco2th(o)->gclist; break;
518 case LUA_TPROTO: o = gco2p(o)->gclist; break; 518 case LUA_VPROTO: o = gco2p(o)->gclist; break;
519 default: lua_assert(0); /* other objects cannot be in a gray list */ 519 default: lua_assert(0); /* other objects cannot be in a gray list */
520 } 520 }
521 } 521 }
@@ -570,7 +570,7 @@ int lua_checkmemory (lua_State *L) {
570 570
571 /* check 'fixedgc' list */ 571 /* check 'fixedgc' list */
572 for (o = g->fixedgc; o != NULL; o = o->next) { 572 for (o = g->fixedgc; o != NULL; o = o->next) {
573 lua_assert(o->tt == LUA_TSHRSTR && isgray(o) && getage(o) == G_OLD); 573 lua_assert(o->tt == LUA_VSHRSTR && isgray(o) && getage(o) == G_OLD);
574 } 574 }
575 575
576 /* check 'allgc' list */ 576 /* check 'allgc' list */
@@ -584,7 +584,7 @@ int lua_checkmemory (lua_State *L) {
584 for (o = g->tobefnz; o != NULL; o = o->next) { 584 for (o = g->tobefnz; o != NULL; o = o->next) {
585 checkobject(g, o, 0, G_NEW); 585 checkobject(g, o, 0, G_NEW);
586 lua_assert(tofinalize(o)); 586 lua_assert(tofinalize(o));
587 lua_assert(o->tt == LUA_TUSERDATA || o->tt == LUA_TTABLE); 587 lua_assert(o->tt == LUA_VUSERDATA || o->tt == LUA_VTABLE);
588 } 588 }
589 return 0; 589 return 0;
590} 590}
diff --git a/ltests.h b/ltests.h
index 8c8de476..7328aaca 100644
--- a/ltests.h
+++ b/ltests.h
@@ -61,7 +61,7 @@ typedef struct Memcontrol {
61 unsigned long maxmem; 61 unsigned long maxmem;
62 unsigned long memlimit; 62 unsigned long memlimit;
63 unsigned long countlimit; 63 unsigned long countlimit;
64 unsigned long objcount[LUA_NUMTAGS]; 64 unsigned long objcount[LUA_NUMTYPES];
65} Memcontrol; 65} Memcontrol;
66 66
67LUA_API Memcontrol l_memcontrol; 67LUA_API Memcontrol l_memcontrol;
diff --git a/ltm.c b/ltm.c
index ca46f04e..ae60983f 100644
--- a/ltm.c
+++ b/ltm.c
@@ -27,7 +27,7 @@
27 27
28static const char udatatypename[] = "userdata"; 28static const char udatatypename[] = "userdata";
29 29
30LUAI_DDEF const char *const luaT_typenames_[LUA_TOTALTAGS] = { 30LUAI_DDEF const char *const luaT_typenames_[LUA_TOTALTYPES] = {
31 "no value", 31 "no value",
32 "nil", "boolean", udatatypename, "number", 32 "nil", "boolean", udatatypename, "number",
33 "string", "table", "function", udatatypename, "thread", 33 "string", "table", "function", udatatypename, "thread",
diff --git a/ltm.h b/ltm.h
index 9621e68e..99b545e7 100644
--- a/ltm.h
+++ b/ltm.h
@@ -59,7 +59,7 @@ typedef enum {
59 59
60#define ttypename(x) luaT_typenames_[(x) + 1] 60#define ttypename(x) luaT_typenames_[(x) + 1]
61 61
62LUAI_DDEC(const char *const luaT_typenames_[LUA_TOTALTAGS];) 62LUAI_DDEC(const char *const luaT_typenames_[LUA_TOTALTYPES];)
63 63
64 64
65LUAI_FUNC const char *luaT_objtypename (lua_State *L, const TValue *o); 65LUAI_FUNC const char *luaT_objtypename (lua_State *L, const TValue *o);
diff --git a/lua.h b/lua.h
index 0ae9e7c9..b348c147 100644
--- a/lua.h
+++ b/lua.h
@@ -72,7 +72,7 @@ typedef struct lua_State lua_State;
72#define LUA_TUSERDATA 7 72#define LUA_TUSERDATA 7
73#define LUA_TTHREAD 8 73#define LUA_TTHREAD 8
74 74
75#define LUA_NUMTAGS 9 75#define LUA_NUMTYPES 9
76 76
77 77
78 78
@@ -412,6 +412,8 @@ LUA_API void (lua_toclose) (lua_State *L, int idx);
412#define lua_getuservalue(L,idx) lua_getiuservalue(L,idx,1) 412#define lua_getuservalue(L,idx) lua_getiuservalue(L,idx,1)
413#define lua_setuservalue(L,idx) lua_setiuservalue(L,idx,1) 413#define lua_setuservalue(L,idx) lua_setiuservalue(L,idx,1)
414 414
415#define LUA_NUMTAGS LUA_NUMTYPES
416
415/* }============================================================== */ 417/* }============================================================== */
416 418
417/* 419/*
diff --git a/lundump.c b/lundump.c
index 45e0b637..1fa322f6 100644
--- a/lundump.c
+++ b/lundump.c
@@ -157,23 +157,23 @@ static void LoadConstants (LoadState *S, Proto *f) {
157 TValue *o = &f->k[i]; 157 TValue *o = &f->k[i];
158 int t = LoadByte(S); 158 int t = LoadByte(S);
159 switch (t) { 159 switch (t) {
160 case LUA_TNIL: 160 case LUA_VNIL:
161 setnilvalue(o); 161 setnilvalue(o);
162 break; 162 break;
163 case LUA_TFALSE: 163 case LUA_VFALSE:
164 setbfvalue(o); 164 setbfvalue(o);
165 break; 165 break;
166 case LUA_TTRUE: 166 case LUA_VTRUE:
167 setbtvalue(o); 167 setbtvalue(o);
168 break; 168 break;
169 case LUA_TNUMFLT: 169 case LUA_VNUMFLT:
170 setfltvalue(o, LoadNumber(S)); 170 setfltvalue(o, LoadNumber(S));
171 break; 171 break;
172 case LUA_TNUMINT: 172 case LUA_VNUMINT:
173 setivalue(o, LoadInteger(S)); 173 setivalue(o, LoadInteger(S));
174 break; 174 break;
175 case LUA_TSHRSTR: 175 case LUA_VSHRSTR:
176 case LUA_TLNGSTR: 176 case LUA_VLNGSTR:
177 setsvalue2n(S->L, o, LoadString(S)); 177 setsvalue2n(S->L, o, LoadString(S));
178 break; 178 break;
179 default: lua_assert(0); 179 default: lua_assert(0);
diff --git a/lvm.c b/lvm.c
index 656def81..9c1ad47e 100644
--- a/lvm.c
+++ b/lvm.c
@@ -577,14 +577,14 @@ int luaV_equalobj (lua_State *L, const TValue *t1, const TValue *t2) {
577 } 577 }
578 /* values have same type and same variant */ 578 /* values have same type and same variant */
579 switch (ttypetag(t1)) { 579 switch (ttypetag(t1)) {
580 case LUA_TNIL: case LUA_TFALSE: case LUA_TTRUE: return 1; 580 case LUA_VNIL: case LUA_VFALSE: case LUA_VTRUE: return 1;
581 case LUA_TNUMINT: return (ivalue(t1) == ivalue(t2)); 581 case LUA_VNUMINT: return (ivalue(t1) == ivalue(t2));
582 case LUA_TNUMFLT: return luai_numeq(fltvalue(t1), fltvalue(t2)); 582 case LUA_VNUMFLT: return luai_numeq(fltvalue(t1), fltvalue(t2));
583 case LUA_TLIGHTUSERDATA: return pvalue(t1) == pvalue(t2); 583 case LUA_VLIGHTUSERDATA: return pvalue(t1) == pvalue(t2);
584 case LUA_TLCF: return fvalue(t1) == fvalue(t2); 584 case LUA_VLCF: return fvalue(t1) == fvalue(t2);
585 case LUA_TSHRSTR: return eqshrstr(tsvalue(t1), tsvalue(t2)); 585 case LUA_VSHRSTR: return eqshrstr(tsvalue(t1), tsvalue(t2));
586 case LUA_TLNGSTR: return luaS_eqlngstr(tsvalue(t1), tsvalue(t2)); 586 case LUA_VLNGSTR: return luaS_eqlngstr(tsvalue(t1), tsvalue(t2));
587 case LUA_TUSERDATA: { 587 case LUA_VUSERDATA: {
588 if (uvalue(t1) == uvalue(t2)) return 1; 588 if (uvalue(t1) == uvalue(t2)) return 1;
589 else if (L == NULL) return 0; 589 else if (L == NULL) return 0;
590 tm = fasttm(L, uvalue(t1)->metatable, TM_EQ); 590 tm = fasttm(L, uvalue(t1)->metatable, TM_EQ);
@@ -592,7 +592,7 @@ int luaV_equalobj (lua_State *L, const TValue *t1, const TValue *t2) {
592 tm = fasttm(L, uvalue(t2)->metatable, TM_EQ); 592 tm = fasttm(L, uvalue(t2)->metatable, TM_EQ);
593 break; /* will try TM */ 593 break; /* will try TM */
594 } 594 }
595 case LUA_TTABLE: { 595 case LUA_VTABLE: {
596 if (hvalue(t1) == hvalue(t2)) return 1; 596 if (hvalue(t1) == hvalue(t2)) return 1;
597 else if (L == NULL) return 0; 597 else if (L == NULL) return 0;
598 tm = fasttm(L, hvalue(t1)->metatable, TM_EQ); 598 tm = fasttm(L, hvalue(t1)->metatable, TM_EQ);
@@ -680,18 +680,18 @@ void luaV_concat (lua_State *L, int total) {
680void luaV_objlen (lua_State *L, StkId ra, const TValue *rb) { 680void luaV_objlen (lua_State *L, StkId ra, const TValue *rb) {
681 const TValue *tm; 681 const TValue *tm;
682 switch (ttypetag(rb)) { 682 switch (ttypetag(rb)) {
683 case LUA_TTABLE: { 683 case LUA_VTABLE: {
684 Table *h = hvalue(rb); 684 Table *h = hvalue(rb);
685 tm = fasttm(L, h->metatable, TM_LEN); 685 tm = fasttm(L, h->metatable, TM_LEN);
686 if (tm) break; /* metamethod? break switch to call it */ 686 if (tm) break; /* metamethod? break switch to call it */
687 setivalue(s2v(ra), luaH_getn(h)); /* else primitive len */ 687 setivalue(s2v(ra), luaH_getn(h)); /* else primitive len */
688 return; 688 return;
689 } 689 }
690 case LUA_TSHRSTR: { 690 case LUA_VSHRSTR: {
691 setivalue(s2v(ra), tsvalue(rb)->shrlen); 691 setivalue(s2v(ra), tsvalue(rb)->shrlen);
692 return; 692 return;
693 } 693 }
694 case LUA_TLNGSTR: { 694 case LUA_VLNGSTR: {
695 setivalue(s2v(ra), tsvalue(rb)->u.lnglen); 695 setivalue(s2v(ra), tsvalue(rb)->u.lnglen);
696 return; 696 return;
697 } 697 }