aboutsummaryrefslogtreecommitdiff
path: root/ltable.h
diff options
context:
space:
mode:
authorRoberto Ierusalimschy <roberto@inf.puc-rio.br>2022-11-01 15:42:08 -0300
committerRoberto Ierusalimschy <roberto@inf.puc-rio.br>2022-11-01 15:42:08 -0300
commit8047b2d03eaaeee44871a11f8d3a3135f2639b1a (patch)
tree2b2d246e2c63ba0accd7c3463a0d331669abe1ef /ltable.h
parentee645472ebe153e2c6669c84a632297a8110bdb6 (diff)
downloadlua-8047b2d03eaaeee44871a11f8d3a3135f2639b1a.tar.gz
lua-8047b2d03eaaeee44871a11f8d3a3135f2639b1a.tar.bz2
lua-8047b2d03eaaeee44871a11f8d3a3135f2639b1a.zip
Tables have a 'lastfree' information only when needed
Only tables with some minimum number of entries in their hash part have a 'lastfree' field, kept in a header before the node vector.
Diffstat (limited to 'ltable.h')
-rw-r--r--ltable.h14
1 files changed, 12 insertions, 2 deletions
diff --git a/ltable.h b/ltable.h
index 75dd9e26..dce8c2f7 100644
--- a/ltable.h
+++ b/ltable.h
@@ -23,8 +23,18 @@
23#define invalidateTMcache(t) ((t)->flags &= ~maskflags) 23#define invalidateTMcache(t) ((t)->flags &= ~maskflags)
24 24
25 25
26/* true when 't' is using 'dummynode' as its hash part */ 26/*
27#define isdummy(t) ((t)->lastfree == NULL) 27** Bit BITDUMMY set in 'flags' means the table is using the dummy node
28** for its hash part.
29*/
30
31#define BITDUMMY (1 << 6)
32#define NOTBITDUMMY cast_byte(~BITDUMMY)
33#define isdummy(t) ((t)->flags & BITDUMMY)
34
35#define setnodummy(t) ((t)->flags &= NOTBITDUMMY)
36#define setdummy(t) ((t)->flags |= BITDUMMY)
37
28 38
29 39
30/* allocated size for hash nodes */ 40/* allocated size for hash nodes */