aboutsummaryrefslogtreecommitdiff
path: root/lapi.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 /lapi.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 'lapi.c')
-rw-r--r--lapi.c23
1 files changed, 5 insertions, 18 deletions
diff --git a/lapi.c b/lapi.c
index 7c6cb7ef..c4d14652 100644
--- a/lapi.c
+++ b/lapi.c
@@ -1,5 +1,5 @@
1/* 1/*
2** $Id: lapi.c,v 1.75 2000/03/20 19:14:54 roberto Exp roberto $ 2** $Id: lapi.c,v 1.76 2000/03/27 20:10:21 roberto Exp roberto $
3** Lua API 3** Lua API
4** See Copyright Notice in lua.h 4** See Copyright Notice in lua.h
5*/ 5*/
@@ -30,17 +30,6 @@ const char lua_ident[] = "$Lua: " LUA_VERSION " " LUA_COPYRIGHT " $\n"
30 30
31 31
32 32
33
34const TObject *luaA_protovalue (const TObject *o) {
35 switch (ttype(o)) {
36 case TAG_CCLOSURE: case TAG_LCLOSURE:
37 return protovalue(o);
38 default:
39 return o;
40 }
41}
42
43
44void luaA_checkCargs (lua_State *L, int nargs) { 33void luaA_checkCargs (lua_State *L, int nargs) {
45 if (nargs > L->top-L->Cstack.base) 34 if (nargs > L->top-L->Cstack.base)
46 luaL_verror(L, "Lua API error - " 35 luaL_verror(L, "Lua API error - "
@@ -210,7 +199,8 @@ int lua_isuserdata (lua_State *L, lua_Object o) {
210} 199}
211 200
212int lua_iscfunction (lua_State *L, lua_Object o) { 201int lua_iscfunction (lua_State *L, lua_Object o) {
213 return (lua_tag(L, o) == TAG_CPROTO); 202 UNUSED(L);
203 return (o != LUA_NOOBJECT) && (ttype(o) == TAG_CCLOSURE);
214} 204}
215 205
216int lua_isnumber (lua_State *L, lua_Object o) { 206int lua_isnumber (lua_State *L, lua_Object o) {
@@ -266,7 +256,7 @@ void *lua_getuserdata (lua_State *L, lua_Object obj) {
266lua_CFunction lua_getcfunction (lua_State *L, lua_Object obj) { 256lua_CFunction lua_getcfunction (lua_State *L, lua_Object obj) {
267 if (!lua_iscfunction(L, obj)) 257 if (!lua_iscfunction(L, obj))
268 return NULL; 258 return NULL;
269 else return fvalue(luaA_protovalue(obj)); 259 else return clvalue(obj)->f.c;
270} 260}
271 261
272 262
@@ -299,10 +289,7 @@ void lua_pushcclosure (lua_State *L, lua_CFunction fn, int n) {
299 if (fn == NULL) 289 if (fn == NULL)
300 lua_error(L, "Lua API error - attempt to push a NULL Cfunction"); 290 lua_error(L, "Lua API error - attempt to push a NULL Cfunction");
301 luaA_checkCargs(L, n); 291 luaA_checkCargs(L, n);
302 ttype(L->top) = TAG_CPROTO; 292 luaV_Cclosure(L, fn, n);
303 fvalue(L->top) = fn;
304 incr_top;
305 luaV_closure(L, n);
306 luaC_checkGC(L); 293 luaC_checkGC(L);
307} 294}
308 295