aboutsummaryrefslogtreecommitdiff
path: root/lobject.c
diff options
context:
space:
mode:
authorRoberto Ierusalimschy <roberto@inf.puc-rio.br>2000-03-29 17:19:20 -0300
committerRoberto Ierusalimschy <roberto@inf.puc-rio.br>2000-03-29 17:19:20 -0300
commita69356e9e0a7525b1cebadc928a0efcce8c39b46 (patch)
treec676ee2997c699d3e0b036323ecbafa7ea0d786f /lobject.c
parentb53dc0c4853c56694dda727793e5f6188de39dd8 (diff)
downloadlua-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.c15
1 files changed, 5 insertions, 10 deletions
diff --git a/lobject.c b/lobject.c
index b3f0da34..edfed796 100644
--- a/lobject.c
+++ b/lobject.c
@@ -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
16const char *const luaO_typenames[] = { /* ORDER LUA_T */ 16const 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
36int luaO_equalval (const TObject *t1, const TObject *t2) { 35int 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 */