aboutsummaryrefslogtreecommitdiff
path: root/lobject.c
diff options
context:
space:
mode:
authorRoberto Ierusalimschy <roberto@inf.puc-rio.br>1997-12-15 14:17:20 -0200
committerRoberto Ierusalimschy <roberto@inf.puc-rio.br>1997-12-15 14:17:20 -0200
commit45e533599f08d849951b49bcab0be4fd735a966d (patch)
treeb8e3b175989f694391dd3da4191894f5df1e7d75 /lobject.c
parent94144a7821c0fa412d5d228ab5197a8ebaaa3c25 (diff)
downloadlua-45e533599f08d849951b49bcab0be4fd735a966d.tar.gz
lua-45e533599f08d849951b49bcab0be4fd735a966d.tar.bz2
lua-45e533599f08d849951b49bcab0be4fd735a966d.zip
optimization: closures without upvalues don't need to be closures
Diffstat (limited to 'lobject.c')
-rw-r--r--lobject.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/lobject.c b/lobject.c
index c575030d..0ace7836 100644
--- a/lobject.c
+++ b/lobject.c
@@ -1,5 +1,5 @@
1/* 1/*
2** $Id: lobject.c,v 1.6 1997/11/03 20:45:23 roberto Exp roberto $ 2** $Id: lobject.c,v 1.7 1997/11/19 17:29:23 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*/
@@ -12,8 +12,8 @@
12 12
13 13
14char *luaO_typenames[] = { /* ORDER LUA_T */ 14char *luaO_typenames[] = { /* ORDER LUA_T */
15 "userdata", "number", "string", "table", "prototype", "cprototype", 15 "userdata", "number", "string", "table", "function", "function",
16 "nil", "function", "mark", "cmark", "line", NULL 16 "nil", "function", "mark", "mark", "mark", "line", NULL
17}; 17};
18 18
19 19
@@ -48,7 +48,9 @@ int luaO_equalObj (TObject *t1, TObject *t2)
48 case LUA_T_NUMBER: return nvalue(t1) == nvalue(t2); 48 case LUA_T_NUMBER: return nvalue(t1) == nvalue(t2);
49 case LUA_T_STRING: case LUA_T_USERDATA: return svalue(t1) == svalue(t2); 49 case LUA_T_STRING: case LUA_T_USERDATA: return svalue(t1) == svalue(t2);
50 case LUA_T_ARRAY: return avalue(t1) == avalue(t2); 50 case LUA_T_ARRAY: return avalue(t1) == avalue(t2);
51 case LUA_T_FUNCTION: return t1->value.cl == t2->value.cl; 51 case LUA_T_CLOSURE: return t1->value.cl == t2->value.cl;
52 case LUA_T_PROTO: return tfvalue(t1) == tfvalue(t2);
53 case LUA_T_CPROTO: return fvalue(t1) == fvalue(t2);
52 default: 54 default:
53 lua_error("internal error in `lua_equalObj'"); 55 lua_error("internal error in `lua_equalObj'");
54 return 0; /* UNREACHEABLE */ 56 return 0; /* UNREACHEABLE */