diff options
author | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 2000-03-29 17:19:20 -0300 |
---|---|---|
committer | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 2000-03-29 17:19:20 -0300 |
commit | a69356e9e0a7525b1cebadc928a0efcce8c39b46 (patch) | |
tree | c676ee2997c699d3e0b036323ecbafa7ea0d786f /lobject.c | |
parent | b53dc0c4853c56694dda727793e5f6188de39dd8 (diff) | |
download | lua-a69356e9e0a7525b1cebadc928a0efcce8c39b46.tar.gz lua-a69356e9e0a7525b1cebadc928a0efcce8c39b46.tar.bz2 lua-a69356e9e0a7525b1cebadc928a0efcce8c39b46.zip |
no more special cases for closures with 0 upvalues (performance is the same,
memory use a little higher, code much simpler).
Diffstat (limited to 'lobject.c')
-rw-r--r-- | lobject.c | 15 |
1 files changed, 5 insertions, 10 deletions
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | ** $Id: lobject.c,v 1.33 2000/03/10 18:37:44 roberto Exp roberto $ | 2 | ** $Id: lobject.c,v 1.34 2000/03/27 20:10:21 roberto Exp roberto $ |
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 | */ |
@@ -15,8 +15,7 @@ | |||
15 | 15 | ||
16 | const char *const luaO_typenames[] = { /* ORDER LUA_T */ | 16 | const char *const luaO_typenames[] = { /* ORDER LUA_T */ |
17 | "userdata", "number", "string", "table", "function", "function", "nil", | 17 | "userdata", "number", "string", "table", "function", "function", "nil", |
18 | "function", "function", "function", "function", "function", "function", | 18 | "function", "function", "line" |
19 | "line", NULL | ||
20 | }; | 19 | }; |
21 | 20 | ||
22 | 21 | ||
@@ -35,20 +34,16 @@ unsigned long luaO_power2 (unsigned long n) { | |||
35 | 34 | ||
36 | int luaO_equalval (const TObject *t1, const TObject *t2) { | 35 | int luaO_equalval (const TObject *t1, const TObject *t2) { |
37 | switch (ttype(t1)) { | 36 | switch (ttype(t1)) { |
38 | case TAG_NIL: | ||
39 | return 1; | ||
40 | case TAG_NUMBER: | 37 | case TAG_NUMBER: |
41 | return nvalue(t1) == nvalue(t2); | 38 | return nvalue(t1) == nvalue(t2); |
42 | case TAG_STRING: case TAG_USERDATA: | 39 | case TAG_STRING: case TAG_USERDATA: |
43 | return svalue(t1) == svalue(t2); | 40 | return svalue(t1) == svalue(t2); |
44 | case TAG_TABLE: | 41 | case TAG_TABLE: |
45 | return avalue(t1) == avalue(t2); | 42 | return avalue(t1) == avalue(t2); |
46 | case TAG_LPROTO: | ||
47 | return tfvalue(t1) == tfvalue(t2); | ||
48 | case TAG_CPROTO: | ||
49 | return fvalue(t1) == fvalue(t2); | ||
50 | case TAG_CCLOSURE: case TAG_LCLOSURE: | 43 | case TAG_CCLOSURE: case TAG_LCLOSURE: |
51 | return t1->value.cl == t2->value.cl; | 44 | return clvalue(t1) == clvalue(t2); |
45 | case TAG_NIL: | ||
46 | return 1; | ||
52 | default: | 47 | default: |
53 | LUA_INTERNALERROR(L, "invalid type"); | 48 | LUA_INTERNALERROR(L, "invalid type"); |
54 | return 0; /* UNREACHABLE */ | 49 | return 0; /* UNREACHABLE */ |