diff options
author | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 2024-01-25 13:52:52 -0300 |
---|---|---|
committer | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 2024-01-25 13:52:52 -0300 |
commit | 108e0bdc8495782544c351b17eaae1411a910e89 (patch) | |
tree | 1196b9d9288b38b0be0290e30ec818fa09d06238 /ldebug.c | |
parent | b34a97a4af5c9e973915c07dba918d95009e0acd (diff) | |
parent | e288c5a91883793d14ed9e9d93464f6ee0b08915 (diff) | |
download | lua-108e0bdc8495782544c351b17eaae1411a910e89.tar.gz lua-108e0bdc8495782544c351b17eaae1411a910e89.tar.bz2 lua-108e0bdc8495782544c351b17eaae1411a910e89.zip |
Merge branch 'master' into nextversion
Diffstat (limited to 'ldebug.c')
-rw-r--r-- | ldebug.c | 5 |
1 files changed, 2 insertions, 3 deletions
@@ -927,12 +927,12 @@ int luaG_traceexec (lua_State *L, const Instruction *pc) { | |||
927 | } | 927 | } |
928 | pc++; /* reference is always next instruction */ | 928 | pc++; /* reference is always next instruction */ |
929 | ci->u.l.savedpc = pc; /* save 'pc' */ | 929 | ci->u.l.savedpc = pc; /* save 'pc' */ |
930 | counthook = (--L->hookcount == 0 && (mask & LUA_MASKCOUNT)); | 930 | counthook = (mask & LUA_MASKCOUNT) && (--L->hookcount == 0); |
931 | if (counthook) | 931 | if (counthook) |
932 | resethookcount(L); /* reset count */ | 932 | resethookcount(L); /* reset count */ |
933 | else if (!(mask & LUA_MASKLINE)) | 933 | else if (!(mask & LUA_MASKLINE)) |
934 | return 1; /* no line hook and count != 0; nothing to be done now */ | 934 | return 1; /* no line hook and count != 0; nothing to be done now */ |
935 | if (ci->callstatus & CIST_HOOKYIELD) { /* called hook last time? */ | 935 | if (ci->callstatus & CIST_HOOKYIELD) { /* hook yielded last time? */ |
936 | ci->callstatus &= ~CIST_HOOKYIELD; /* erase mark */ | 936 | ci->callstatus &= ~CIST_HOOKYIELD; /* erase mark */ |
937 | return 1; /* do not call hook again (VM yielded, so it did not move) */ | 937 | return 1; /* do not call hook again (VM yielded, so it did not move) */ |
938 | } | 938 | } |
@@ -954,7 +954,6 @@ int luaG_traceexec (lua_State *L, const Instruction *pc) { | |||
954 | if (L->status == LUA_YIELD) { /* did hook yield? */ | 954 | if (L->status == LUA_YIELD) { /* did hook yield? */ |
955 | if (counthook) | 955 | if (counthook) |
956 | L->hookcount = 1; /* undo decrement to zero */ | 956 | L->hookcount = 1; /* undo decrement to zero */ |
957 | ci->u.l.savedpc--; /* undo increment (resume will increment it again) */ | ||
958 | ci->callstatus |= CIST_HOOKYIELD; /* mark that it yielded */ | 957 | ci->callstatus |= CIST_HOOKYIELD; /* mark that it yielded */ |
959 | luaD_throw(L, LUA_YIELD); | 958 | luaD_throw(L, LUA_YIELD); |
960 | } | 959 | } |