aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRoberto Ierusalimschy <roberto@inf.puc-rio.br>2011-11-28 15:25:48 -0200
committerRoberto Ierusalimschy <roberto@inf.puc-rio.br>2011-11-28 15:25:48 -0200
commit217b65e6d941f7ae1a615b2749d1b1d94d6da827 (patch)
treed128606b3eb801e21f5b6d78c1b00745b0b2b2da
parent8119374e7458073372408ccb8929ffb96537e411 (diff)
downloadlua-217b65e6d941f7ae1a615b2749d1b1d94d6da827.tar.gz
lua-217b65e6d941f7ae1a615b2749d1b1d94d6da827.tar.bz2
lua-217b65e6d941f7ae1a615b2749d1b1d94d6da827.zip
avoid some warnings about converting 32-bit shifts into 64-bit results
-rw-r--r--lgc.c18
-rw-r--r--ltable.c6
2 files changed, 15 insertions, 9 deletions
diff --git a/lgc.c b/lgc.c
index ebdc3238..75444175 100644
--- a/lgc.c
+++ b/lgc.c
@@ -1,5 +1,5 @@
1/* 1/*
2** $Id: lgc.c,v 2.113 2011/10/03 16:22:05 roberto Exp roberto $ 2** $Id: lgc.c,v 2.114 2011/10/03 17:54:25 roberto Exp roberto $
3** Garbage Collector 3** Garbage Collector
4** See Copyright Notice in lua.h 4** See Copyright Notice in lua.h
5*/ 5*/
@@ -94,6 +94,12 @@ static void reallymarkobject (global_State *g, GCObject *o);
94 94
95 95
96/* 96/*
97** one after last element in a hash array
98*/
99#define gnodelast(h) gnode(h, cast(size_t, sizenode(h)))
100
101
102/*
97** link table 'h' into list pointed by 'p' 103** link table 'h' into list pointed by 'p'
98*/ 104*/
99#define linktable(h,p) ((h)->gclist = *(p), *(p) = obj2gco(h)) 105#define linktable(h,p) ((h)->gclist = *(p), *(p) = obj2gco(h))
@@ -342,7 +348,7 @@ static void markroot (global_State *g) {
342*/ 348*/
343 349
344static void traverseweakvalue (global_State *g, Table *h) { 350static void traverseweakvalue (global_State *g, Table *h) {
345 Node *n, *limit = gnode(h, sizenode(h)); 351 Node *n, *limit = gnodelast(h);
346 /* if there is array part, assume it may have white values (do not 352 /* if there is array part, assume it may have white values (do not
347 traverse it just to check) */ 353 traverse it just to check) */
348 int hasclears = (h->sizearray > 0); 354 int hasclears = (h->sizearray > 0);
@@ -368,7 +374,7 @@ static int traverseephemeron (global_State *g, Table *h) {
368 int marked = 0; /* true if an object is marked in this traversal */ 374 int marked = 0; /* true if an object is marked in this traversal */
369 int hasclears = 0; /* true if table has white keys */ 375 int hasclears = 0; /* true if table has white keys */
370 int prop = 0; /* true if table has entry "white-key -> white-value" */ 376 int prop = 0; /* true if table has entry "white-key -> white-value" */
371 Node *n, *limit = gnode(h, sizenode(h)); 377 Node *n, *limit = gnodelast(h);
372 int i; 378 int i;
373 /* traverse array part (numeric keys are 'strong') */ 379 /* traverse array part (numeric keys are 'strong') */
374 for (i = 0; i < h->sizearray; i++) { 380 for (i = 0; i < h->sizearray; i++) {
@@ -403,7 +409,7 @@ static int traverseephemeron (global_State *g, Table *h) {
403 409
404 410
405static void traversestrongtable (global_State *g, Table *h) { 411static void traversestrongtable (global_State *g, Table *h) {
406 Node *n, *limit = gnode(h, sizenode(h)); 412 Node *n, *limit = gnodelast(h);
407 int i; 413 int i;
408 for (i = 0; i < h->sizearray; i++) /* traverse array part */ 414 for (i = 0; i < h->sizearray; i++) /* traverse array part */
409 markvalue(g, &h->array[i]); 415 markvalue(g, &h->array[i]);
@@ -596,7 +602,7 @@ static void convergeephemerons (global_State *g) {
596static void clearkeys (GCObject *l, GCObject *f) { 602static void clearkeys (GCObject *l, GCObject *f) {
597 for (; l != f; l = gco2t(l)->gclist) { 603 for (; l != f; l = gco2t(l)->gclist) {
598 Table *h = gco2t(l); 604 Table *h = gco2t(l);
599 Node *n, *limit = gnode(h, sizenode(h)); 605 Node *n, *limit = gnodelast(h);
600 for (n = gnode(h, 0); n < limit; n++) { 606 for (n = gnode(h, 0); n < limit; n++) {
601 if (!ttisnil(gval(n)) && (iscleared(gkey(n)))) { 607 if (!ttisnil(gval(n)) && (iscleared(gkey(n)))) {
602 setnilvalue(gval(n)); /* remove value ... */ 608 setnilvalue(gval(n)); /* remove value ... */
@@ -614,7 +620,7 @@ static void clearkeys (GCObject *l, GCObject *f) {
614static void clearvalues (GCObject *l, GCObject *f) { 620static void clearvalues (GCObject *l, GCObject *f) {
615 for (; l != f; l = gco2t(l)->gclist) { 621 for (; l != f; l = gco2t(l)->gclist) {
616 Table *h = gco2t(l); 622 Table *h = gco2t(l);
617 Node *n, *limit = gnode(h, sizenode(h)); 623 Node *n, *limit = gnodelast(h);
618 int i; 624 int i;
619 for (i = 0; i < h->sizearray; i++) { 625 for (i = 0; i < h->sizearray; i++) {
620 TValue *o = &h->array[i]; 626 TValue *o = &h->array[i];
diff --git a/ltable.c b/ltable.c
index d348d87f..6ded0d93 100644
--- a/ltable.c
+++ b/ltable.c
@@ -1,5 +1,5 @@
1/* 1/*
2** $Id: ltable.c,v 2.64 2011/09/24 21:12:01 roberto Exp roberto $ 2** $Id: ltable.c,v 2.65 2011/09/30 12:45:27 roberto Exp roberto $
3** Lua tables (hash) 3** Lua tables (hash)
4** See Copyright Notice in lua.h 4** See Copyright Notice in lua.h
5*/ 5*/
@@ -322,7 +322,7 @@ void luaH_resize (lua_State *L, Table *t, int nasize, int nhsize) {
322 } 322 }
323 } 323 }
324 if (!isdummy(nold)) 324 if (!isdummy(nold))
325 luaM_freearray(L, nold, twoto(oldhsize)); /* free old array */ 325 luaM_freearray(L, nold, cast(size_t, twoto(oldhsize))); /* free old array */
326} 326}
327 327
328 328
@@ -370,7 +370,7 @@ Table *luaH_new (lua_State *L) {
370 370
371void luaH_free (lua_State *L, Table *t) { 371void luaH_free (lua_State *L, Table *t) {
372 if (!isdummy(t->node)) 372 if (!isdummy(t->node))
373 luaM_freearray(L, t->node, sizenode(t)); 373 luaM_freearray(L, t->node, cast(size_t, sizenode(t)));
374 luaM_freearray(L, t->array, t->sizearray); 374 luaM_freearray(L, t->array, t->sizearray);
375 luaM_free(L, t); 375 luaM_free(L, t);
376} 376}