diff options
| author | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 2015-10-22 12:40:47 -0200 |
|---|---|---|
| committer | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 2015-10-22 12:40:47 -0200 |
| commit | ee5ef0f295a317457132912c817d0ad9ee74e8af (patch) | |
| tree | 8a1bca2ea857de6782f451a778ae12a1e8fc3b9a | |
| parent | 5bdee4f81057698cf7da2bb5da814984170abf8c (diff) | |
| download | lua-ee5ef0f295a317457132912c817d0ad9ee74e8af.tar.gz lua-ee5ef0f295a317457132912c817d0ad9ee74e8af.tar.bz2 lua-ee5ef0f295a317457132912c817d0ad9ee74e8af.zip | |
hook test in 'luaV_execute' reduced to minimum (rest done in
'luaG_traceexec'
| -rw-r--r-- | ldebug.c | 6 |
1 files changed, 4 insertions, 2 deletions
| @@ -1,5 +1,5 @@ | |||
| 1 | /* | 1 | /* |
| 2 | ** $Id: ldebug.c,v 2.114 2015/03/28 19:14:47 roberto Exp roberto $ | 2 | ** $Id: ldebug.c,v 2.115 2015/05/22 17:45:56 roberto Exp roberto $ |
| 3 | ** Debug Interface | 3 | ** Debug Interface |
| 4 | ** See Copyright Notice in lua.h | 4 | ** See Copyright Notice in lua.h |
| 5 | */ | 5 | */ |
| @@ -640,9 +640,11 @@ l_noret luaG_runerror (lua_State *L, const char *fmt, ...) { | |||
| 640 | void luaG_traceexec (lua_State *L) { | 640 | void luaG_traceexec (lua_State *L) { |
| 641 | CallInfo *ci = L->ci; | 641 | CallInfo *ci = L->ci; |
| 642 | lu_byte mask = L->hookmask; | 642 | lu_byte mask = L->hookmask; |
| 643 | int counthook = ((mask & LUA_MASKCOUNT) && L->hookcount == 0); | 643 | int counthook = (--L->hookcount == 0 && (mask & LUA_MASKCOUNT)); |
| 644 | if (counthook) | 644 | if (counthook) |
| 645 | resethookcount(L); /* reset count */ | 645 | resethookcount(L); /* reset count */ |
| 646 | else if (!(mask & LUA_MASKLINE)) | ||
| 647 | return; /* no line hook and count != 0; nothing to be done */ | ||
| 646 | if (ci->callstatus & CIST_HOOKYIELD) { /* called hook last time? */ | 648 | if (ci->callstatus & CIST_HOOKYIELD) { /* called hook last time? */ |
| 647 | ci->callstatus &= ~CIST_HOOKYIELD; /* erase mark */ | 649 | ci->callstatus &= ~CIST_HOOKYIELD; /* erase mark */ |
| 648 | return; /* do not call hook again (VM yielded, so it did not move) */ | 650 | return; /* do not call hook again (VM yielded, so it did not move) */ |
