GH-118095: Allow a variant of RESUME_CHECK in tier 2 (GH-118286)

This commit is contained in:
Mark Shannon 2024-04-29 07:54:05 +01:00 committed by GitHub
parent aa8f6d2708
commit ab6eda0ee5
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
6 changed files with 189 additions and 103 deletions

View file

@ -4295,4 +4295,31 @@
break;
}
case _TIER2_RESUME_CHECK: {
#if defined(__EMSCRIPTEN__)
if (_Py_emscripten_signal_clock == 0) {
UOP_STAT_INC(uopcode, miss);
JUMP_TO_JUMP_TARGET();
}
_Py_emscripten_signal_clock -= Py_EMSCRIPTEN_SIGNAL_HANDLING;
#endif
uintptr_t eval_breaker = _Py_atomic_load_uintptr_relaxed(&tstate->eval_breaker);
if (eval_breaker & _PY_EVAL_EVENTS_MASK) {
UOP_STAT_INC(uopcode, miss);
JUMP_TO_JUMP_TARGET();
}
assert(eval_breaker == FT_ATOMIC_LOAD_UINTPTR_ACQUIRE(_PyFrame_GetCode(frame)->_co_instrumentation_version));
break;
}
case _EVAL_BREAKER_EXIT: {
_Py_CHECK_EMSCRIPTEN_SIGNALS_PERIODICALLY();
QSBR_QUIESCENT_STATE(tstate);
if (_Py_HandlePending(tstate) != 0) {
GOTO_UNWIND();
}
EXIT_TO_TRACE();
break;
}
#undef TIER_TWO