You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Micro-ops that have side-exits are sometimes marked as "escaping", when they should not be. #137276
We tag micro-ops as "escaping", using HAS_ESCAPES_FLAG, when they call out to a function that might change the state of the world.
However, if that call only happens on an exit branch, then there is no escape if execution stays on trace.
In those cases we should not mark the micro-op as escaping.
For example: _GUARD_IS_NONE_POP is defined as follows:
intis_none=PyStackRef_IsNone(val);
if (!is_none) {
PyStackRef_CLOSE(val);
SYNC_SP();
EXIT_IF(1);
}
DEAD(val);
The call to PyStackRef_CLOSE only occurs on the exit branch. So, if execution continues past _GUARD_IS_NONE_POP then no escaping call has been made. Therefore we shouldn't mark _GUARD_IS_NONE_POP as escaping.
Activity
GH-137276: Don't mark uop as escaping if the escaping call is on an e…
pythonGH-137276: Don't mark uop as escaping if the escaping call is o…