diff options
author | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 2024-01-25 13:44:49 -0300 |
---|---|---|
committer | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 2024-01-25 13:44:49 -0300 |
commit | b34a97a4af5c9e973915c07dba918d95009e0acd (patch) | |
tree | c5fca69c78260918dd950ab4013fc50fccd4090b /ltm.h | |
parent | 3e9dbe143d3338f5f13a5e421ea593adff482da0 (diff) | |
download | lua-b34a97a4af5c9e973915c07dba918d95009e0acd.tar.gz lua-b34a97a4af5c9e973915c07dba918d95009e0acd.tar.bz2 lua-b34a97a4af5c9e973915c07dba918d95009e0acd.zip |
Small optimization in 'luaH_psetint'
It is quite common to write to empty but existing cells in the array
part of a table, so 'luaH_psetint' checks for the common case that
the table doesn't have a newindex metamethod to complete the write.
Diffstat (limited to 'ltm.h')
-rw-r--r-- | ltm.h | 7 |
1 files changed, 4 insertions, 3 deletions
@@ -60,11 +60,12 @@ typedef enum { | |||
60 | */ | 60 | */ |
61 | #define notm(tm) ttisnil(tm) | 61 | #define notm(tm) ttisnil(tm) |
62 | 62 | ||
63 | #define checknoTM(mt,e) ((mt) == NULL || (mt)->flags & (1u<<(e))) | ||
63 | 64 | ||
64 | #define gfasttm(g,et,e) ((et) == NULL ? NULL : \ | 65 | #define gfasttm(g,mt,e) \ |
65 | ((et)->flags & (1u<<(e))) ? NULL : luaT_gettm(et, e, (g)->tmname[e])) | 66 | (checknoTM(mt, e) ? NULL : luaT_gettm(mt, e, (g)->tmname[e])) |
66 | 67 | ||
67 | #define fasttm(l,et,e) gfasttm(G(l), et, e) | 68 | #define fasttm(l,mt,e) gfasttm(G(l), mt, e) |
68 | 69 | ||
69 | #define ttypename(x) luaT_typenames_[(x) + 1] | 70 | #define ttypename(x) luaT_typenames_[(x) + 1] |
70 | 71 | ||