|
Hello, This patch introduces bitwise operators to lua_Number. It
was porting/extending Doug Rogers’ patch for lua 5.1.1. Here are the operators (metaoperator): A|B : or (__bor) A&B : and A^|B : xor, (__band) Doug was using #, because ^ is used for
power, I preferred to define a 2 signs token closer to usual notation A<<s: left shift, (__blshift) B>>s: right shift, (__brshift) ~A : not, (__bnot) It isn’t backward compatible with lua because it
introduced some new opcodes. To disable these operators, just turn off
LUA_BITWISE_OPERATORS in luaconf.h and you are back to standard lua. Well, it also includes the patch for direct threaded code in
virtual machine for gcc, which isn’t enabled on x86, and can be discarded
in luaconf.h % uname -a Linux 2.4.21-37.ELsmp #1 SMP Wed Sep 7 13:28:55 EDT 2005
i686 i686 i386 GNU/Linux %gcc --version gcc (GCC) 3.2.3 20030502 (Red Hat Linux 3.2.3-53) Copyright (C) 2002 Free Software Foundation, Inc. This is free software; see the source for copying
conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE. [lua-5.1.1
]
% size src/lua text
data bss
dec hex filename 114770
644 16 115430 1c2e6 src/lua [lua-5.1.1
]
% size src/luac text
data bss
dec hex filename 78504
456 16 78976 13480
src/luac [lua-5.1.1.patched
]
% size src/lua text data
bss dec hex filename 117330
644 16 117990 1cce6 src/lua [lua-5.1.1.patched
]
% size src/luac text
data bss
dec hex filename 81140
456 16 81612 13ecc
src/luac So the overhead is roughly 2,5Ko I post it here for Comments/Suggestion (how to check the
boundaries, …)/Deeper testing… And would be interested to know if something similar would
be included in lua 5.2… Thierry |
Attachment:
bitwise_directthreaded.patch.gz
Description: bitwise_directthreaded.patch.gz