aboutsummaryrefslogtreecommitdiff
path: root/lapi.c
diff options
context:
space:
mode:
authorRoberto Ierusalimschy <roberto@inf.puc-rio.br>2020-01-06 11:38:31 -0300
committerRoberto Ierusalimschy <roberto@inf.puc-rio.br>2020-01-06 11:38:31 -0300
commit5ff408d2189c6c24fdf8908db4a31432bbdd6f15 (patch)
treebcd83d7547dab0d5418116eb10f9c601f2f2d3b9 /lapi.c
parente3c83835e7b396ab7db538fb3b052f02d7807dee (diff)
downloadlua-5ff408d2189c6c24fdf8908db4a31432bbdd6f15.tar.gz
lua-5ff408d2189c6c24fdf8908db4a31432bbdd6f15.tar.bz2
lua-5ff408d2189c6c24fdf8908db4a31432bbdd6f15.zip
Changed internal representation of booleans
Instead of an explicit value (field 'b'), true and false use different tag variants. This avoids reading an extra field and results in more direct code. (Most code that uses booleans needs to distinguish between true and false anyway.)
Diffstat (limited to '')
-rw-r--r--lapi.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/lapi.c b/lapi.c
index 073baa4d..0e99abef 100644
--- a/lapi.c
+++ b/lapi.c
@@ -574,7 +574,10 @@ LUA_API void lua_pushcclosure (lua_State *L, lua_CFunction fn, int n) {
574 574
575LUA_API void lua_pushboolean (lua_State *L, int b) { 575LUA_API void lua_pushboolean (lua_State *L, int b) {
576 lua_lock(L); 576 lua_lock(L);
577 setbvalue(s2v(L->top), (b != 0)); /* ensure that true is 1 */ 577 if (b)
578 setbtvalue(s2v(L->top));
579 else
580 setbfvalue(s2v(L->top));
578 api_incr_top(L); 581 api_incr_top(L);
579 lua_unlock(L); 582 lua_unlock(L);
580} 583}