commit 3f04a9f2c07bc06dddbc473178b314f1fd686701
parent 2a59a999d482daa619cbf8fc8f78918d9a0c7e77
Author: Roberto Ierusalimschy <roberto@inf.puc-rio.br>
Date: Mon, 30 May 2011 13:36:14 -0300
code is simpler without 'goto' here
Diffstat:
1 file changed, 3 insertions(+), 9 deletions(-)
diff --git a/ldo.c b/ldo.c
@@ -1,5 +1,5 @@
/*
-** $Id: ldo.c,v 2.92 2011/02/07 17:14:50 roberto Exp roberto $
+** $Id: ldo.c,v 2.93 2011/02/23 13:13:10 roberto Exp roberto $
** Stack and Call structure of Lua
** See Copyright Notice in lua.h
*/
@@ -299,16 +299,10 @@ int luaD_precall (lua_State *L, StkId func, int nresults) {
if (!ttisfunction(func)) /* `func' is not a function? */
func = tryfuncTM(L, func); /* check the `function' tag method */
funcr = savestack(L, func);
- if (ttislcf(func)) { /* light C function? */
- f = fvalue(func); /* get it */
- goto isCfunc; /* go to call it */
- }
- cl = clvalue(func);
- if (cl->c.isC) { /* C closure? */
+ if (ttislcf(func) || (cl = clvalue(func), cl->c.isC)) { /* C function? */
CallInfo *ci;
int n;
- f = cl->c.f;
- isCfunc: /* call C function 'f' */
+ f = (ttislcf(func) ? fvalue(func) : cl->c.f);
luaD_checkstack(L, LUA_MINSTACK); /* ensure minimum stack size */
ci = next_ci(L); /* now 'enter' new function */
ci->nresults = nresults;