diff options
author | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 2023-11-03 15:26:13 -0300 |
---|---|---|
committer | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 2023-11-03 15:26:13 -0300 |
commit | 08a077d673b25cf1fbfe21794f240f4ff4999667 (patch) | |
tree | 77ae945c9a2680af23d5fa11c156482b35c14e04 /lgc.c | |
parent | 43c8e5bded052801f54a7439d18933b83570eb82 (diff) | |
download | lua-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.c | 8 |
1 files changed, 4 insertions, 4 deletions
@@ -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? */ |