aboutsummaryrefslogtreecommitdiff
path: root/lgc.c
diff options
context:
space:
mode:
authorRoberto Ierusalimschy <roberto@inf.puc-rio.br>2023-11-03 15:26:13 -0300
committerRoberto Ierusalimschy <roberto@inf.puc-rio.br>2023-11-03 15:26:13 -0300
commit08a077d673b25cf1fbfe21794f240f4ff4999667 (patch)
tree77ae945c9a2680af23d5fa11c156482b35c14e04 /lgc.c
parent43c8e5bded052801f54a7439d18933b83570eb82 (diff)
downloadlua-08a077d673b25cf1fbfe21794f240f4ff4999667.tar.gz
lua-08a077d673b25cf1fbfe21794f240f4ff4999667.tar.bz2
lua-08a077d673b25cf1fbfe21794f240f4ff4999667.zip
Full implementation of new representation for arrays
Diffstat (limited to 'lgc.c')
-rw-r--r--lgc.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/lgc.c b/lgc.c
index 813b08d5..0f423282 100644
--- a/lgc.c
+++ b/lgc.c
@@ -493,7 +493,7 @@ static int traverseephemeron (global_State *g, Table *h, int inv) {
493 unsigned int nsize = sizenode(h); 493 unsigned int nsize = sizenode(h);
494 /* traverse array part */ 494 /* traverse array part */
495 for (i = 0; i < asize; i++) { 495 for (i = 0; i < asize; i++) {
496 GCObject *o = gcvalarr(h, i + 1); 496 GCObject *o = gcvalarr(h, i);
497 if (o != NULL && iswhite(o)) { 497 if (o != NULL && iswhite(o)) {
498 marked = 1; 498 marked = 1;
499 reallymarkobject(g, o); 499 reallymarkobject(g, o);
@@ -533,7 +533,7 @@ static void traversestrongtable (global_State *g, Table *h) {
533 unsigned int i; 533 unsigned int i;
534 unsigned int asize = luaH_realasize(h); 534 unsigned int asize = luaH_realasize(h);
535 for (i = 0; i < asize; i++) { /* traverse array part */ 535 for (i = 0; i < asize; i++) { /* traverse array part */
536 GCObject *o = gcvalarr(h, i + 1); 536 GCObject *o = gcvalarr(h, i);
537 if (o != NULL && iswhite(o)) 537 if (o != NULL && iswhite(o))
538 reallymarkobject(g, o); 538 reallymarkobject(g, o);
539 } 539 }
@@ -757,9 +757,9 @@ static void clearbyvalues (global_State *g, GCObject *l, GCObject *f) {
757 unsigned int i; 757 unsigned int i;
758 unsigned int asize = luaH_realasize(h); 758 unsigned int asize = luaH_realasize(h);
759 for (i = 0; i < asize; i++) { 759 for (i = 0; i < asize; i++) {
760 GCObject *o = gcvalarr(h, i + 1); 760 GCObject *o = gcvalarr(h, i);
761 if (iscleared(g, o)) /* value was collected? */ 761 if (iscleared(g, o)) /* value was collected? */
762 *getArrTag(h, i + 1) = LUA_VEMPTY; /* remove entry */ 762 *getArrTag(h, i) = LUA_VEMPTY; /* remove entry */
763 } 763 }
764 for (n = gnode(h, 0); n < limit; n++) { 764 for (n = gnode(h, 0); n < limit; n++) {
765 if (iscleared(g, gcvalueN(gval(n)))) /* unmarked value? */ 765 if (iscleared(g, gcvalueN(gval(n)))) /* unmarked value? */