Free bit 7 of GC 'marked' field

Tables were using this bit to indicate their array sizes were real
('isrealasize'), but this bit can be useful for tests. Instead, they
can use bit 7 of their 'flag' field for that purpose. (There are only
six fast-access metamethods.) This 'flag' field only exists in tables,
so this use does not affect other types.
This commit is contained in:
Roberto Ierusalimschy
2020-08-07 11:21:44 -03:00
parent 68109afcdb
commit 7c3cb71fa4
6 changed files with 31 additions and 7 deletions

View File

@@ -15,7 +15,12 @@
#define gnext(n) ((n)->u.next)
#define invalidateTMcache(t) ((t)->flags = 0)
/*
** Clear all bits of fast-access metamethods, which means that the table
** may have any of these metamethods. (First access that fails after the
** clearing will set the bit again.)
*/
#define invalidateTMcache(t) ((t)->flags &= ~maskflags)
/* true when 't' is using 'dummynode' as its hash part */