diff options
| author | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 1997-12-15 14:17:20 -0200 |
|---|---|---|
| committer | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 1997-12-15 14:17:20 -0200 |
| commit | 45e533599f08d849951b49bcab0be4fd735a966d (patch) | |
| tree | b8e3b175989f694391dd3da4191894f5df1e7d75 /lobject.c | |
| parent | 94144a7821c0fa412d5d228ab5197a8ebaaa3c25 (diff) | |
| download | lua-45e533599f08d849951b49bcab0be4fd735a966d.tar.gz lua-45e533599f08d849951b49bcab0be4fd735a966d.tar.bz2 lua-45e533599f08d849951b49bcab0be4fd735a966d.zip | |
optimization: closures without upvalues don't need to be closures
Diffstat (limited to '')
| -rw-r--r-- | lobject.c | 10 |
1 files changed, 6 insertions, 4 deletions
| @@ -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 | ||
| 14 | char *luaO_typenames[] = { /* ORDER LUA_T */ | 14 | char *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 */ |
