aboutsummaryrefslogtreecommitdiff
path: root/lobject.c
diff options
context:
space:
mode:
Diffstat (limited to 'lobject.c')
-rw-r--r--lobject.c30
1 files changed, 29 insertions, 1 deletions
diff --git a/lobject.c b/lobject.c
index 0b597ff1..3dfafde4 100644
--- a/lobject.c
+++ b/lobject.c
@@ -1,5 +1,5 @@
1/* 1/*
2** $Id: lobject.c,v 1.69 2001/03/07 12:27:06 roberto Exp roberto $ 2** $Id: lobject.c,v 1.70 2001/03/26 14:31:49 roberto Exp $
3** Some generic functions over Lua objects 3** Some generic functions over Lua objects
4** See Copyright Notice in lua.h 4** See Copyright Notice in lua.h
5*/ 5*/
@@ -23,6 +23,34 @@
23const TObject luaO_nilobject = {LUA_TNIL, {NULL}}; 23const TObject luaO_nilobject = {LUA_TNIL, {NULL}};
24 24
25 25
26int luaO_log2 (unsigned int x) {
27 static const lu_byte log_8[255] = {
28 0,
29 1,1,
30 2,2,2,2,
31 3,3,3,3,3,3,3,3,
32 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
33 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
34 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,
35 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,
36 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,
37 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,
38 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,
39 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,
40 };
41 if (x & 0xffff0000) {
42 if (x & 0xff000000) return log_8[((x>>24) & 0xff) - 1]+24;
43 else return log_8[((x>>16) & 0xff) - 1]+16;
44 }
45 else {
46 if (x & 0x0000ff00) return log_8[((x>>8) & 0xff) - 1]+8;
47 else if (x) return log_8[(x & 0xff) - 1];
48 return -1; /* special `log' for 0 */
49 }
50}
51
52
53
26int luaO_equalObj (const TObject *t1, const TObject *t2) { 54int luaO_equalObj (const TObject *t1, const TObject *t2) {
27 if (ttype(t1) != ttype(t2)) return 0; 55 if (ttype(t1) != ttype(t2)) return 0;
28 switch (ttype(t1)) { 56 switch (ttype(t1)) {