mirror of https://github.com/rusefi/lua.git
hook test in 'luaV_execute' reduced to minimum (rest done in
'luaG_traceexec'
This commit is contained in:
parent
5bdee4f810
commit
ee5ef0f295
6
ldebug.c
6
ldebug.c
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
** $Id: ldebug.c,v 2.114 2015/03/28 19:14:47 roberto Exp roberto $
|
** $Id: ldebug.c,v 2.115 2015/05/22 17:45:56 roberto Exp roberto $
|
||||||
** Debug Interface
|
** Debug Interface
|
||||||
** See Copyright Notice in lua.h
|
** See Copyright Notice in lua.h
|
||||||
*/
|
*/
|
||||||
|
@ -640,9 +640,11 @@ l_noret luaG_runerror (lua_State *L, const char *fmt, ...) {
|
||||||
void luaG_traceexec (lua_State *L) {
|
void luaG_traceexec (lua_State *L) {
|
||||||
CallInfo *ci = L->ci;
|
CallInfo *ci = L->ci;
|
||||||
lu_byte mask = L->hookmask;
|
lu_byte mask = L->hookmask;
|
||||||
int counthook = ((mask & LUA_MASKCOUNT) && L->hookcount == 0);
|
int counthook = (--L->hookcount == 0 && (mask & LUA_MASKCOUNT));
|
||||||
if (counthook)
|
if (counthook)
|
||||||
resethookcount(L); /* reset count */
|
resethookcount(L); /* reset count */
|
||||||
|
else if (!(mask & LUA_MASKLINE))
|
||||||
|
return; /* no line hook and count != 0; nothing to be done */
|
||||||
if (ci->callstatus & CIST_HOOKYIELD) { /* called hook last time? */
|
if (ci->callstatus & CIST_HOOKYIELD) { /* called hook last time? */
|
||||||
ci->callstatus &= ~CIST_HOOKYIELD; /* erase mark */
|
ci->callstatus &= ~CIST_HOOKYIELD; /* erase mark */
|
||||||
return; /* do not call hook again (VM yielded, so it did not move) */
|
return; /* do not call hook again (VM yielded, so it did not move) */
|
||||||
|
|
Loading…
Reference in New Issue