From 08a077d673b25cf1fbfe21794f240f4ff4999667 Mon Sep 17 00:00:00 2001 From: Roberto Ierusalimschy Date: Fri, 3 Nov 2023 15:26:13 -0300 Subject: Full implementation of new representation for arrays --- lgc.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'lgc.c') 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) { unsigned int nsize = sizenode(h); /* traverse array part */ for (i = 0; i < asize; i++) { - GCObject *o = gcvalarr(h, i + 1); + GCObject *o = gcvalarr(h, i); if (o != NULL && iswhite(o)) { marked = 1; reallymarkobject(g, o); @@ -533,7 +533,7 @@ static void traversestrongtable (global_State *g, Table *h) { unsigned int i; unsigned int asize = luaH_realasize(h); for (i = 0; i < asize; i++) { /* traverse array part */ - GCObject *o = gcvalarr(h, i + 1); + GCObject *o = gcvalarr(h, i); if (o != NULL && iswhite(o)) reallymarkobject(g, o); } @@ -757,9 +757,9 @@ static void clearbyvalues (global_State *g, GCObject *l, GCObject *f) { unsigned int i; unsigned int asize = luaH_realasize(h); for (i = 0; i < asize; i++) { - GCObject *o = gcvalarr(h, i + 1); + GCObject *o = gcvalarr(h, i); if (iscleared(g, o)) /* value was collected? */ - *getArrTag(h, i + 1) = LUA_VEMPTY; /* remove entry */ + *getArrTag(h, i) = LUA_VEMPTY; /* remove entry */ } for (n = gnode(h, 0); n < limit; n++) { if (iscleared(g, gcvalueN(gval(n)))) /* unmarked value? */ -- cgit v1.2.3-55-g6feb