diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 13e06a3f0cb4bb..4789cd2c59e6cb 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -289,10 +289,10 @@ Tools/jit/ @brandtbucher @savannahostrowski @diegorusso InternalDocs/jit.md @brandtbucher @savannahostrowski @diegorusso @AA-Turner # Micro-op / μop / Tier 2 Optimiser -Python/optimizer.c @markshannon +Python/optimizer.c @markshannon @Fidget-Spinner Python/optimizer_analysis.c @markshannon @tomasr8 @Fidget-Spinner Python/optimizer_bytecodes.c @markshannon @tomasr8 @Fidget-Spinner -Python/optimizer_symbols.c @markshannon @tomasr8 +Python/optimizer_symbols.c @markshannon @tomasr8 @Fidget-Spinner # Parser, Lexer, and Grammar Grammar/python.gram @pablogsal @lysnikolaou diff --git a/Doc/library/multiprocessing.rst b/Doc/library/multiprocessing.rst index 92605c57527887..382a0abedfc3bc 100644 --- a/Doc/library/multiprocessing.rst +++ b/Doc/library/multiprocessing.rst @@ -521,6 +521,21 @@ Reference The :mod:`multiprocessing` package mostly replicates the API of the :mod:`threading` module. +.. _global-start-method: + +Global start method +^^^^^^^^^^^^^^^^^^^ + +Python supports several ways to create and initialize a process. +The global start method sets the default mechanism for creating a process. + +Several multiprocessing functions and methods that may also instantiate +certain objects will implicitly set the global start method to the system's default, +if it hasn’t been set already. The global start method can only be set once. +If you need to change the start method from the system default, you must +proactively set the global start method before calling functions or methods, +or creating these objects. + :class:`Process` and exceptions ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -910,6 +925,9 @@ For an example of the usage of queues for interprocess communication see locks/semaphores. When a process first puts an item on the queue a feeder thread is started which transfers objects from a buffer into the pipe. + Instantiating this class may set the global start method. See + :ref:`global-start-method` for more details. + The usual :exc:`queue.Empty` and :exc:`queue.Full` exceptions from the standard library's :mod:`queue` module are raised to signal timeouts. @@ -1025,6 +1043,9 @@ For an example of the usage of queues for interprocess communication see It is a simplified :class:`Queue` type, very close to a locked :class:`Pipe`. + Instantiating this class may set the global start method. See + :ref:`global-start-method` for more details. + .. method:: close() Close the queue: release internal resources. @@ -1055,6 +1076,9 @@ For an example of the usage of queues for interprocess communication see :class:`JoinableQueue`, a :class:`Queue` subclass, is a queue which additionally has :meth:`task_done` and :meth:`join` methods. + Instantiating this class may set the global start method. See + :ref:`global-start-method` for more details. + .. method:: task_done() Indicate that a formerly enqueued task is complete. Used by queue @@ -1167,8 +1191,8 @@ Miscellaneous :mod:`multiprocessing` module. If *method* is ``None`` then the default context is returned. Note that if - the global start method has not been set, this will set it to the - default method. + the global start method has not been set, this will set it to the system default + See :ref:`global-start-method` for more details. Otherwise *method* should be ``'fork'``, ``'spawn'``, ``'forkserver'``. :exc:`ValueError` is raised if the specified start method is not available. See :ref:`multiprocessing-start-methods`. @@ -1179,10 +1203,9 @@ Miscellaneous Return the name of start method used for starting processes. - If the global start method has not been set and *allow_none* is - ``False``, then the start method is set to the default and the name - is returned. If the start method has not been set and *allow_none* is - ``True`` then ``None`` is returned. + If the global start method is not set and *allow_none* is ``False``, the global start + method is set to the default, and its name is returned. See + :ref:`global-start-method` for more details. The return value can be ``'fork'``, ``'spawn'``, ``'forkserver'`` or ``None``. See :ref:`multiprocessing-start-methods`. @@ -1409,6 +1432,9 @@ object -- see :ref:`multiprocessing-managers`. A barrier object: a clone of :class:`threading.Barrier`. + Instantiating this class may set the global start method. See + :ref:`global-start-method` for more details. + .. versionadded:: 3.3 .. class:: BoundedSemaphore([value]) @@ -1416,6 +1442,9 @@ object -- see :ref:`multiprocessing-managers`. A bounded semaphore object: a close analog of :class:`threading.BoundedSemaphore`. + Instantiating this class may set the global start method. See + :ref:`global-start-method` for more details. + A solitary difference from its close analog exists: its ``acquire`` method's first argument is named *block*, as is consistent with :meth:`Lock.acquire`. @@ -1436,6 +1465,9 @@ object -- see :ref:`multiprocessing-managers`. If *lock* is specified then it should be a :class:`Lock` or :class:`RLock` object from :mod:`multiprocessing`. + Instantiating this class may set the global start method. See + :ref:`global-start-method` for more details. + .. versionchanged:: 3.3 The :meth:`~threading.Condition.wait_for` method was added. @@ -1443,6 +1475,8 @@ object -- see :ref:`multiprocessing-managers`. A clone of :class:`threading.Event`. + Instantiating this class may set the global start method. See + :ref:`global-start-method` for more details. .. class:: Lock() @@ -1458,6 +1492,9 @@ object -- see :ref:`multiprocessing-managers`. instance of ``multiprocessing.synchronize.Lock`` initialized with a default context. + Instantiating this class may set the global start method. See + :ref:`global-start-method` for more details. + :class:`Lock` supports the :term:`context manager` protocol and thus may be used in :keyword:`with` statements. @@ -1515,6 +1552,9 @@ object -- see :ref:`multiprocessing-managers`. instance of ``multiprocessing.synchronize.RLock`` initialized with a default context. + Instantiating this class may set the global start method. See + :ref:`global-start-method` for more details. + :class:`RLock` supports the :term:`context manager` protocol and thus may be used in :keyword:`with` statements. @@ -1574,6 +1614,9 @@ object -- see :ref:`multiprocessing-managers`. A semaphore object: a close analog of :class:`threading.Semaphore`. + Instantiating this class may set the global start method. See + :ref:`global-start-method` for more details. + A solitary difference from its close analog exists: its ``acquire`` method's first argument is named *block*, as is consistent with :meth:`Lock.acquire`. @@ -1718,7 +1761,7 @@ processes. attributes which allow one to use it to store and retrieve strings -- see documentation for :mod:`ctypes`. -.. function:: Array(typecode_or_type, size_or_initializer, *, lock=True) +.. function:: Array(typecode_or_type, size_or_initializer, *, lock=True, ctx=None) The same as :func:`RawArray` except that depending on the value of *lock* a process-safe synchronization wrapper may be returned instead of a raw ctypes @@ -1732,9 +1775,13 @@ processes. automatically protected by a lock, so it will not necessarily be "process-safe". - Note that *lock* is a keyword-only argument. + *ctx* is a context object, or ``None`` (use the current context). If ``None``, + calling this may set the global start method. See + :ref:`global-start-method` for more details. -.. function:: Value(typecode_or_type, *args, lock=True) + Note that *lock* and *ctx* are keyword-only parameters. + +.. function:: Value(typecode_or_type, *args, lock=True, ctx=None) The same as :func:`RawValue` except that depending on the value of *lock* a process-safe synchronization wrapper may be returned instead of a raw ctypes @@ -1747,19 +1794,27 @@ processes. automatically protected by a lock, so it will not necessarily be "process-safe". - Note that *lock* is a keyword-only argument. + *ctx* is a context object, or ``None`` (use the current context). If ``None``, + calling this may set the global start method. See + :ref:`global-start-method` for more details. + + Note that *lock* and *ctx* are keyword-only parameters. .. function:: copy(obj) Return a ctypes object allocated from shared memory which is a copy of the ctypes object *obj*. -.. function:: synchronized(obj[, lock]) +.. function:: synchronized(obj, lock=None, ctx=None) Return a process-safe wrapper object for a ctypes object which uses *lock* to synchronize access. If *lock* is ``None`` (the default) then a :class:`multiprocessing.RLock` object is created automatically. + *ctx* is a context object, or ``None`` (use the current context). If ``None``, + calling this may set the global start method. See + :ref:`global-start-method` for more details. + A synchronized wrapper will have two methods in addition to those of the object it wraps: :meth:`get_obj` returns the wrapped object and :meth:`get_lock` returns the lock object used for synchronization. @@ -1877,8 +1932,9 @@ their parent process exits. The manager classes are defined in the *serializer* must be ``'pickle'`` (use :mod:`pickle` serialization) or ``'xmlrpclib'`` (use :mod:`xmlrpc.client` serialization). - *ctx* is a context object, or ``None`` (use the current context). See the - :func:`get_context` function. + *ctx* is a context object, or ``None`` (use the current context). If ``None``, + calling this may set the global start method. See + :ref:`global-start-method` for more details. *shutdown_timeout* is a timeout in seconds used to wait until the process used by the manager completes in the :meth:`shutdown` method. If the @@ -2371,7 +2427,9 @@ with the :class:`Pool` class. the worker processes. Usually a pool is created using the function :func:`multiprocessing.Pool` or the :meth:`Pool` method of a context object. In both cases *context* is set - appropriately. + appropriately. If ``None``, calling this function will have the side effect + of setting the current global start method if it has not been set already. + See the :func:`get_context` function. Note that the methods of the pool object should only be called by the process which created the pool. diff --git a/Doc/whatsnew/3.15.rst b/Doc/whatsnew/3.15.rst index 19762584ef798c..a67b7153e238de 100644 --- a/Doc/whatsnew/3.15.rst +++ b/Doc/whatsnew/3.15.rst @@ -74,8 +74,6 @@ Summary -- Release highlights * :pep:`782`: :ref:`A new PyBytesWriter C API to create a Python bytes object ` * :ref:`Improved error messages ` -* :ref:`__pycache__ directories now contain a .gitignore file - ` New features @@ -399,12 +397,6 @@ Other language changes for any class. (Contributed by Serhiy Storchaka in :gh:`41779`.) -.. _whatsnew315-pycache-gitignore: - -* :file:`__pycache__` directories now contain a :file:`.gitignore` file for Git - that ignores their contents. - (Contributed by Stan Ulbrych in :gh:`141081`.) - New modules =========== diff --git a/Include/internal/pycore_ceval.h b/Include/internal/pycore_ceval.h index 6bf33bddd5b877..af53f2e7d6f73e 100644 --- a/Include/internal/pycore_ceval.h +++ b/Include/internal/pycore_ceval.h @@ -377,8 +377,6 @@ _Py_eval_breaker_bit_is_set(PyThreadState *tstate, uintptr_t bit) void _Py_set_eval_breaker_bit_all(PyInterpreterState *interp, uintptr_t bit); void _Py_unset_eval_breaker_bit_all(PyInterpreterState *interp, uintptr_t bit); -PyAPI_FUNC(_PyStackRef) _PyFloat_FromDouble_ConsumeInputs(_PyStackRef left, _PyStackRef right, double value); - #ifndef Py_SUPPORTS_REMOTE_DEBUG #if defined(__APPLE__) #include diff --git a/Include/internal/pycore_opcode_metadata.h b/Include/internal/pycore_opcode_metadata.h index fda52806561430..ce8a26c551bf17 100644 --- a/Include/internal/pycore_opcode_metadata.h +++ b/Include/internal/pycore_opcode_metadata.h @@ -1079,12 +1079,12 @@ extern const struct opcode_metadata _PyOpcode_opcode_metadata[267]; #ifdef NEED_OPCODE_METADATA const struct opcode_metadata _PyOpcode_opcode_metadata[267] = { [BINARY_OP] = { true, INSTR_FMT_IBC0000, HAS_ARG_FLAG | HAS_ERROR_FLAG | HAS_ERROR_NO_POP_FLAG | HAS_ESCAPES_FLAG }, - [BINARY_OP_ADD_FLOAT] = { true, INSTR_FMT_IXC0000, HAS_EXIT_FLAG | HAS_ERROR_FLAG }, + [BINARY_OP_ADD_FLOAT] = { true, INSTR_FMT_IXC0000, HAS_EXIT_FLAG | HAS_ERROR_FLAG | HAS_ERROR_NO_POP_FLAG }, [BINARY_OP_ADD_INT] = { true, INSTR_FMT_IXC0000, HAS_EXIT_FLAG }, [BINARY_OP_ADD_UNICODE] = { true, INSTR_FMT_IXC0000, HAS_EXIT_FLAG | HAS_ERROR_FLAG }, [BINARY_OP_EXTEND] = { true, INSTR_FMT_IXC0000, HAS_DEOPT_FLAG | HAS_ESCAPES_FLAG }, [BINARY_OP_INPLACE_ADD_UNICODE] = { true, INSTR_FMT_IXC0000, HAS_LOCAL_FLAG | HAS_DEOPT_FLAG | HAS_EXIT_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG }, - [BINARY_OP_MULTIPLY_FLOAT] = { true, INSTR_FMT_IXC0000, HAS_EXIT_FLAG | HAS_ERROR_FLAG }, + [BINARY_OP_MULTIPLY_FLOAT] = { true, INSTR_FMT_IXC0000, HAS_EXIT_FLAG | HAS_ERROR_FLAG | HAS_ERROR_NO_POP_FLAG }, [BINARY_OP_MULTIPLY_INT] = { true, INSTR_FMT_IXC0000, HAS_EXIT_FLAG }, [BINARY_OP_SUBSCR_DICT] = { true, INSTR_FMT_IXC0000, HAS_EXIT_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG }, [BINARY_OP_SUBSCR_GETITEM] = { true, INSTR_FMT_IXC0000, HAS_DEOPT_FLAG | HAS_SYNC_SP_FLAG | HAS_NEEDS_GUARD_IP_FLAG }, @@ -1092,7 +1092,7 @@ const struct opcode_metadata _PyOpcode_opcode_metadata[267] = { [BINARY_OP_SUBSCR_LIST_SLICE] = { true, INSTR_FMT_IXC0000, HAS_EXIT_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG }, [BINARY_OP_SUBSCR_STR_INT] = { true, INSTR_FMT_IXC0000, HAS_DEOPT_FLAG | HAS_EXIT_FLAG | HAS_ESCAPES_FLAG }, [BINARY_OP_SUBSCR_TUPLE_INT] = { true, INSTR_FMT_IXC0000, HAS_DEOPT_FLAG | HAS_EXIT_FLAG | HAS_ESCAPES_FLAG }, - [BINARY_OP_SUBTRACT_FLOAT] = { true, INSTR_FMT_IXC0000, HAS_EXIT_FLAG | HAS_ERROR_FLAG }, + [BINARY_OP_SUBTRACT_FLOAT] = { true, INSTR_FMT_IXC0000, HAS_EXIT_FLAG | HAS_ERROR_FLAG | HAS_ERROR_NO_POP_FLAG }, [BINARY_OP_SUBTRACT_INT] = { true, INSTR_FMT_IXC0000, HAS_EXIT_FLAG }, [BINARY_SLICE] = { true, INSTR_FMT_IX, HAS_ERROR_FLAG | HAS_ESCAPES_FLAG }, [BUILD_INTERPOLATION] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG }, @@ -1329,21 +1329,21 @@ extern const struct opcode_macro_expansion _PyOpcode_macro_expansion[256]; const struct opcode_macro_expansion _PyOpcode_macro_expansion[256] = { [BINARY_OP] = { .nuops = 1, .uops = { { _BINARY_OP, OPARG_SIMPLE, 4 } } }, - [BINARY_OP_ADD_FLOAT] = { .nuops = 3, .uops = { { _GUARD_TOS_FLOAT, OPARG_SIMPLE, 0 }, { _GUARD_NOS_FLOAT, OPARG_SIMPLE, 0 }, { _BINARY_OP_ADD_FLOAT, OPARG_SIMPLE, 5 } } }, - [BINARY_OP_ADD_INT] = { .nuops = 3, .uops = { { _GUARD_TOS_INT, OPARG_SIMPLE, 0 }, { _GUARD_NOS_INT, OPARG_SIMPLE, 0 }, { _BINARY_OP_ADD_INT, OPARG_SIMPLE, 5 } } }, + [BINARY_OP_ADD_FLOAT] = { .nuops = 5, .uops = { { _GUARD_TOS_FLOAT, OPARG_SIMPLE, 0 }, { _GUARD_NOS_FLOAT, OPARG_SIMPLE, 0 }, { _BINARY_OP_ADD_FLOAT, OPARG_SIMPLE, 5 }, { _POP_TOP_FLOAT, OPARG_SIMPLE, 5 }, { _POP_TOP_FLOAT, OPARG_SIMPLE, 5 } } }, + [BINARY_OP_ADD_INT] = { .nuops = 5, .uops = { { _GUARD_TOS_INT, OPARG_SIMPLE, 0 }, { _GUARD_NOS_INT, OPARG_SIMPLE, 0 }, { _BINARY_OP_ADD_INT, OPARG_SIMPLE, 5 }, { _POP_TOP_INT, OPARG_SIMPLE, 5 }, { _POP_TOP_INT, OPARG_SIMPLE, 5 } } }, [BINARY_OP_ADD_UNICODE] = { .nuops = 3, .uops = { { _GUARD_TOS_UNICODE, OPARG_SIMPLE, 0 }, { _GUARD_NOS_UNICODE, OPARG_SIMPLE, 0 }, { _BINARY_OP_ADD_UNICODE, OPARG_SIMPLE, 5 } } }, [BINARY_OP_EXTEND] = { .nuops = 2, .uops = { { _GUARD_BINARY_OP_EXTEND, 4, 1 }, { _BINARY_OP_EXTEND, 4, 1 } } }, [BINARY_OP_INPLACE_ADD_UNICODE] = { .nuops = 3, .uops = { { _GUARD_TOS_UNICODE, OPARG_SIMPLE, 0 }, { _GUARD_NOS_UNICODE, OPARG_SIMPLE, 0 }, { _BINARY_OP_INPLACE_ADD_UNICODE, OPARG_SIMPLE, 5 } } }, - [BINARY_OP_MULTIPLY_FLOAT] = { .nuops = 3, .uops = { { _GUARD_TOS_FLOAT, OPARG_SIMPLE, 0 }, { _GUARD_NOS_FLOAT, OPARG_SIMPLE, 0 }, { _BINARY_OP_MULTIPLY_FLOAT, OPARG_SIMPLE, 5 } } }, - [BINARY_OP_MULTIPLY_INT] = { .nuops = 3, .uops = { { _GUARD_TOS_INT, OPARG_SIMPLE, 0 }, { _GUARD_NOS_INT, OPARG_SIMPLE, 0 }, { _BINARY_OP_MULTIPLY_INT, OPARG_SIMPLE, 5 } } }, + [BINARY_OP_MULTIPLY_FLOAT] = { .nuops = 5, .uops = { { _GUARD_TOS_FLOAT, OPARG_SIMPLE, 0 }, { _GUARD_NOS_FLOAT, OPARG_SIMPLE, 0 }, { _BINARY_OP_MULTIPLY_FLOAT, OPARG_SIMPLE, 5 }, { _POP_TOP_FLOAT, OPARG_SIMPLE, 5 }, { _POP_TOP_FLOAT, OPARG_SIMPLE, 5 } } }, + [BINARY_OP_MULTIPLY_INT] = { .nuops = 5, .uops = { { _GUARD_TOS_INT, OPARG_SIMPLE, 0 }, { _GUARD_NOS_INT, OPARG_SIMPLE, 0 }, { _BINARY_OP_MULTIPLY_INT, OPARG_SIMPLE, 5 }, { _POP_TOP_INT, OPARG_SIMPLE, 5 }, { _POP_TOP_INT, OPARG_SIMPLE, 5 } } }, [BINARY_OP_SUBSCR_DICT] = { .nuops = 2, .uops = { { _GUARD_NOS_DICT, OPARG_SIMPLE, 0 }, { _BINARY_OP_SUBSCR_DICT, OPARG_SIMPLE, 5 } } }, [BINARY_OP_SUBSCR_GETITEM] = { .nuops = 4, .uops = { { _CHECK_PEP_523, OPARG_SIMPLE, 5 }, { _BINARY_OP_SUBSCR_CHECK_FUNC, OPARG_SIMPLE, 5 }, { _BINARY_OP_SUBSCR_INIT_CALL, OPARG_SIMPLE, 5 }, { _PUSH_FRAME, OPARG_SIMPLE, 5 } } }, [BINARY_OP_SUBSCR_LIST_INT] = { .nuops = 3, .uops = { { _GUARD_TOS_INT, OPARG_SIMPLE, 0 }, { _GUARD_NOS_LIST, OPARG_SIMPLE, 0 }, { _BINARY_OP_SUBSCR_LIST_INT, OPARG_SIMPLE, 5 } } }, [BINARY_OP_SUBSCR_LIST_SLICE] = { .nuops = 3, .uops = { { _GUARD_TOS_SLICE, OPARG_SIMPLE, 0 }, { _GUARD_NOS_LIST, OPARG_SIMPLE, 0 }, { _BINARY_OP_SUBSCR_LIST_SLICE, OPARG_SIMPLE, 5 } } }, [BINARY_OP_SUBSCR_STR_INT] = { .nuops = 3, .uops = { { _GUARD_TOS_INT, OPARG_SIMPLE, 0 }, { _GUARD_NOS_UNICODE, OPARG_SIMPLE, 0 }, { _BINARY_OP_SUBSCR_STR_INT, OPARG_SIMPLE, 5 } } }, [BINARY_OP_SUBSCR_TUPLE_INT] = { .nuops = 3, .uops = { { _GUARD_TOS_INT, OPARG_SIMPLE, 0 }, { _GUARD_NOS_TUPLE, OPARG_SIMPLE, 0 }, { _BINARY_OP_SUBSCR_TUPLE_INT, OPARG_SIMPLE, 5 } } }, - [BINARY_OP_SUBTRACT_FLOAT] = { .nuops = 3, .uops = { { _GUARD_TOS_FLOAT, OPARG_SIMPLE, 0 }, { _GUARD_NOS_FLOAT, OPARG_SIMPLE, 0 }, { _BINARY_OP_SUBTRACT_FLOAT, OPARG_SIMPLE, 5 } } }, - [BINARY_OP_SUBTRACT_INT] = { .nuops = 3, .uops = { { _GUARD_TOS_INT, OPARG_SIMPLE, 0 }, { _GUARD_NOS_INT, OPARG_SIMPLE, 0 }, { _BINARY_OP_SUBTRACT_INT, OPARG_SIMPLE, 5 } } }, + [BINARY_OP_SUBTRACT_FLOAT] = { .nuops = 5, .uops = { { _GUARD_TOS_FLOAT, OPARG_SIMPLE, 0 }, { _GUARD_NOS_FLOAT, OPARG_SIMPLE, 0 }, { _BINARY_OP_SUBTRACT_FLOAT, OPARG_SIMPLE, 5 }, { _POP_TOP_FLOAT, OPARG_SIMPLE, 5 }, { _POP_TOP_FLOAT, OPARG_SIMPLE, 5 } } }, + [BINARY_OP_SUBTRACT_INT] = { .nuops = 5, .uops = { { _GUARD_TOS_INT, OPARG_SIMPLE, 0 }, { _GUARD_NOS_INT, OPARG_SIMPLE, 0 }, { _BINARY_OP_SUBTRACT_INT, OPARG_SIMPLE, 5 }, { _POP_TOP_INT, OPARG_SIMPLE, 5 }, { _POP_TOP_INT, OPARG_SIMPLE, 5 } } }, [BINARY_SLICE] = { .nuops = 1, .uops = { { _BINARY_SLICE, OPARG_SIMPLE, 0 } } }, [BUILD_INTERPOLATION] = { .nuops = 1, .uops = { { _BUILD_INTERPOLATION, OPARG_SIMPLE, 0 } } }, [BUILD_LIST] = { .nuops = 1, .uops = { { _BUILD_LIST, OPARG_SIMPLE, 0 } } }, @@ -1382,7 +1382,7 @@ _PyOpcode_macro_expansion[256] = { [CHECK_EXC_MATCH] = { .nuops = 1, .uops = { { _CHECK_EXC_MATCH, OPARG_SIMPLE, 0 } } }, [COMPARE_OP] = { .nuops = 1, .uops = { { _COMPARE_OP, OPARG_SIMPLE, 0 } } }, [COMPARE_OP_FLOAT] = { .nuops = 3, .uops = { { _GUARD_TOS_FLOAT, OPARG_SIMPLE, 0 }, { _GUARD_NOS_FLOAT, OPARG_SIMPLE, 0 }, { _COMPARE_OP_FLOAT, OPARG_SIMPLE, 1 } } }, - [COMPARE_OP_INT] = { .nuops = 3, .uops = { { _GUARD_TOS_INT, OPARG_SIMPLE, 0 }, { _GUARD_NOS_INT, OPARG_SIMPLE, 0 }, { _COMPARE_OP_INT, OPARG_SIMPLE, 1 } } }, + [COMPARE_OP_INT] = { .nuops = 5, .uops = { { _GUARD_TOS_INT, OPARG_SIMPLE, 0 }, { _GUARD_NOS_INT, OPARG_SIMPLE, 0 }, { _COMPARE_OP_INT, OPARG_SIMPLE, 1 }, { _POP_TOP_INT, OPARG_SIMPLE, 1 }, { _POP_TOP_INT, OPARG_SIMPLE, 1 } } }, [COMPARE_OP_STR] = { .nuops = 3, .uops = { { _GUARD_TOS_UNICODE, OPARG_SIMPLE, 0 }, { _GUARD_NOS_UNICODE, OPARG_SIMPLE, 0 }, { _COMPARE_OP_STR, OPARG_SIMPLE, 1 } } }, [CONTAINS_OP] = { .nuops = 1, .uops = { { _CONTAINS_OP, OPARG_SIMPLE, 0 } } }, [CONTAINS_OP_DICT] = { .nuops = 2, .uops = { { _GUARD_TOS_DICT, OPARG_SIMPLE, 0 }, { _CONTAINS_OP_DICT, OPARG_SIMPLE, 1 } } }, @@ -1482,8 +1482,8 @@ _PyOpcode_macro_expansion[256] = { [SET_FUNCTION_ATTRIBUTE] = { .nuops = 1, .uops = { { _SET_FUNCTION_ATTRIBUTE, OPARG_SIMPLE, 0 } } }, [SET_UPDATE] = { .nuops = 1, .uops = { { _SET_UPDATE, OPARG_SIMPLE, 0 } } }, [STORE_ATTR] = { .nuops = 1, .uops = { { _STORE_ATTR, OPARG_SIMPLE, 3 } } }, - [STORE_ATTR_INSTANCE_VALUE] = { .nuops = 3, .uops = { { _GUARD_TYPE_VERSION_AND_LOCK, 2, 1 }, { _GUARD_DORV_NO_DICT, OPARG_SIMPLE, 3 }, { _STORE_ATTR_INSTANCE_VALUE, 1, 3 } } }, - [STORE_ATTR_SLOT] = { .nuops = 2, .uops = { { _GUARD_TYPE_VERSION, 2, 1 }, { _STORE_ATTR_SLOT, 1, 3 } } }, + [STORE_ATTR_INSTANCE_VALUE] = { .nuops = 4, .uops = { { _GUARD_TYPE_VERSION_AND_LOCK, 2, 1 }, { _GUARD_DORV_NO_DICT, OPARG_SIMPLE, 3 }, { _STORE_ATTR_INSTANCE_VALUE, 1, 3 }, { _POP_TOP, OPARG_SIMPLE, 4 } } }, + [STORE_ATTR_SLOT] = { .nuops = 3, .uops = { { _GUARD_TYPE_VERSION, 2, 1 }, { _STORE_ATTR_SLOT, 1, 3 }, { _POP_TOP, OPARG_SIMPLE, 4 } } }, [STORE_ATTR_WITH_HINT] = { .nuops = 2, .uops = { { _GUARD_TYPE_VERSION, 2, 1 }, { _STORE_ATTR_WITH_HINT, 1, 3 } } }, [STORE_DEREF] = { .nuops = 1, .uops = { { _STORE_DEREF, OPARG_SIMPLE, 0 } } }, [STORE_FAST] = { .nuops = 1, .uops = { { _STORE_FAST, OPARG_SIMPLE, 0 } } }, diff --git a/Include/internal/pycore_uop_ids.h b/Include/internal/pycore_uop_ids.h index 42793d940b51b7..df623f49b0d52c 100644 --- a/Include/internal/pycore_uop_ids.h +++ b/Include/internal/pycore_uop_ids.h @@ -13,25 +13,22 @@ extern "C" { #define _SET_IP 301 #define _BINARY_OP 302 #define _BINARY_OP_ADD_FLOAT 303 -#define _BINARY_OP_ADD_FLOAT__NO_DECREF_INPUTS 304 -#define _BINARY_OP_ADD_INT 305 -#define _BINARY_OP_ADD_UNICODE 306 -#define _BINARY_OP_EXTEND 307 -#define _BINARY_OP_INPLACE_ADD_UNICODE 308 -#define _BINARY_OP_MULTIPLY_FLOAT 309 -#define _BINARY_OP_MULTIPLY_FLOAT__NO_DECREF_INPUTS 310 -#define _BINARY_OP_MULTIPLY_INT 311 -#define _BINARY_OP_SUBSCR_CHECK_FUNC 312 -#define _BINARY_OP_SUBSCR_DICT 313 -#define _BINARY_OP_SUBSCR_INIT_CALL 314 -#define _BINARY_OP_SUBSCR_LIST_INT 315 -#define _BINARY_OP_SUBSCR_LIST_SLICE 316 -#define _BINARY_OP_SUBSCR_STR_INT 317 -#define _BINARY_OP_SUBSCR_TUPLE_INT 318 -#define _BINARY_OP_SUBTRACT_FLOAT 319 -#define _BINARY_OP_SUBTRACT_FLOAT__NO_DECREF_INPUTS 320 -#define _BINARY_OP_SUBTRACT_INT 321 -#define _BINARY_SLICE 322 +#define _BINARY_OP_ADD_INT 304 +#define _BINARY_OP_ADD_UNICODE 305 +#define _BINARY_OP_EXTEND 306 +#define _BINARY_OP_INPLACE_ADD_UNICODE 307 +#define _BINARY_OP_MULTIPLY_FLOAT 308 +#define _BINARY_OP_MULTIPLY_INT 309 +#define _BINARY_OP_SUBSCR_CHECK_FUNC 310 +#define _BINARY_OP_SUBSCR_DICT 311 +#define _BINARY_OP_SUBSCR_INIT_CALL 312 +#define _BINARY_OP_SUBSCR_LIST_INT 313 +#define _BINARY_OP_SUBSCR_LIST_SLICE 314 +#define _BINARY_OP_SUBSCR_STR_INT 315 +#define _BINARY_OP_SUBSCR_TUPLE_INT 316 +#define _BINARY_OP_SUBTRACT_FLOAT 317 +#define _BINARY_OP_SUBTRACT_INT 318 +#define _BINARY_SLICE 319 #define _BUILD_INTERPOLATION BUILD_INTERPOLATION #define _BUILD_LIST BUILD_LIST #define _BUILD_MAP BUILD_MAP @@ -40,148 +37,148 @@ extern "C" { #define _BUILD_STRING BUILD_STRING #define _BUILD_TEMPLATE BUILD_TEMPLATE #define _BUILD_TUPLE BUILD_TUPLE -#define _CALL_BUILTIN_CLASS 323 -#define _CALL_BUILTIN_FAST 324 -#define _CALL_BUILTIN_FAST_WITH_KEYWORDS 325 -#define _CALL_BUILTIN_O 326 +#define _CALL_BUILTIN_CLASS 320 +#define _CALL_BUILTIN_FAST 321 +#define _CALL_BUILTIN_FAST_WITH_KEYWORDS 322 +#define _CALL_BUILTIN_O 323 #define _CALL_INTRINSIC_1 CALL_INTRINSIC_1 #define _CALL_INTRINSIC_2 CALL_INTRINSIC_2 -#define _CALL_ISINSTANCE 327 -#define _CALL_KW_NON_PY 328 -#define _CALL_LEN 329 -#define _CALL_LIST_APPEND 330 -#define _CALL_METHOD_DESCRIPTOR_FAST 331 -#define _CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS 332 -#define _CALL_METHOD_DESCRIPTOR_NOARGS 333 -#define _CALL_METHOD_DESCRIPTOR_O 334 -#define _CALL_NON_PY_GENERAL 335 -#define _CALL_STR_1 336 -#define _CALL_TUPLE_1 337 -#define _CALL_TYPE_1 338 -#define _CHECK_AND_ALLOCATE_OBJECT 339 -#define _CHECK_ATTR_CLASS 340 -#define _CHECK_ATTR_METHOD_LAZY_DICT 341 -#define _CHECK_CALL_BOUND_METHOD_EXACT_ARGS 342 +#define _CALL_ISINSTANCE 324 +#define _CALL_KW_NON_PY 325 +#define _CALL_LEN 326 +#define _CALL_LIST_APPEND 327 +#define _CALL_METHOD_DESCRIPTOR_FAST 328 +#define _CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS 329 +#define _CALL_METHOD_DESCRIPTOR_NOARGS 330 +#define _CALL_METHOD_DESCRIPTOR_O 331 +#define _CALL_NON_PY_GENERAL 332 +#define _CALL_STR_1 333 +#define _CALL_TUPLE_1 334 +#define _CALL_TYPE_1 335 +#define _CHECK_AND_ALLOCATE_OBJECT 336 +#define _CHECK_ATTR_CLASS 337 +#define _CHECK_ATTR_METHOD_LAZY_DICT 338 +#define _CHECK_CALL_BOUND_METHOD_EXACT_ARGS 339 #define _CHECK_EG_MATCH CHECK_EG_MATCH #define _CHECK_EXC_MATCH CHECK_EXC_MATCH -#define _CHECK_FUNCTION_EXACT_ARGS 343 -#define _CHECK_FUNCTION_VERSION 344 -#define _CHECK_FUNCTION_VERSION_INLINE 345 -#define _CHECK_FUNCTION_VERSION_KW 346 -#define _CHECK_IS_NOT_PY_CALLABLE 347 -#define _CHECK_IS_NOT_PY_CALLABLE_KW 348 -#define _CHECK_MANAGED_OBJECT_HAS_VALUES 349 -#define _CHECK_METHOD_VERSION 350 -#define _CHECK_METHOD_VERSION_KW 351 -#define _CHECK_PEP_523 352 -#define _CHECK_PERIODIC 353 -#define _CHECK_PERIODIC_AT_END 354 -#define _CHECK_PERIODIC_IF_NOT_YIELD_FROM 355 -#define _CHECK_RECURSION_REMAINING 356 -#define _CHECK_STACK_SPACE 357 -#define _CHECK_STACK_SPACE_OPERAND 358 -#define _CHECK_VALIDITY 359 -#define _COLD_DYNAMIC_EXIT 360 -#define _COLD_EXIT 361 -#define _COMPARE_OP 362 -#define _COMPARE_OP_FLOAT 363 -#define _COMPARE_OP_INT 364 -#define _COMPARE_OP_STR 365 -#define _CONTAINS_OP 366 -#define _CONTAINS_OP_DICT 367 -#define _CONTAINS_OP_SET 368 +#define _CHECK_FUNCTION_EXACT_ARGS 340 +#define _CHECK_FUNCTION_VERSION 341 +#define _CHECK_FUNCTION_VERSION_INLINE 342 +#define _CHECK_FUNCTION_VERSION_KW 343 +#define _CHECK_IS_NOT_PY_CALLABLE 344 +#define _CHECK_IS_NOT_PY_CALLABLE_KW 345 +#define _CHECK_MANAGED_OBJECT_HAS_VALUES 346 +#define _CHECK_METHOD_VERSION 347 +#define _CHECK_METHOD_VERSION_KW 348 +#define _CHECK_PEP_523 349 +#define _CHECK_PERIODIC 350 +#define _CHECK_PERIODIC_AT_END 351 +#define _CHECK_PERIODIC_IF_NOT_YIELD_FROM 352 +#define _CHECK_RECURSION_REMAINING 353 +#define _CHECK_STACK_SPACE 354 +#define _CHECK_STACK_SPACE_OPERAND 355 +#define _CHECK_VALIDITY 356 +#define _COLD_DYNAMIC_EXIT 357 +#define _COLD_EXIT 358 +#define _COMPARE_OP 359 +#define _COMPARE_OP_FLOAT 360 +#define _COMPARE_OP_INT 361 +#define _COMPARE_OP_STR 362 +#define _CONTAINS_OP 363 +#define _CONTAINS_OP_DICT 364 +#define _CONTAINS_OP_SET 365 #define _CONVERT_VALUE CONVERT_VALUE -#define _COPY 369 -#define _COPY_1 370 -#define _COPY_2 371 -#define _COPY_3 372 +#define _COPY 366 +#define _COPY_1 367 +#define _COPY_2 368 +#define _COPY_3 369 #define _COPY_FREE_VARS COPY_FREE_VARS -#define _CREATE_INIT_FRAME 373 +#define _CREATE_INIT_FRAME 370 #define _DELETE_ATTR DELETE_ATTR #define _DELETE_DEREF DELETE_DEREF #define _DELETE_FAST DELETE_FAST #define _DELETE_GLOBAL DELETE_GLOBAL #define _DELETE_NAME DELETE_NAME #define _DELETE_SUBSCR DELETE_SUBSCR -#define _DEOPT 374 +#define _DEOPT 371 #define _DICT_MERGE DICT_MERGE #define _DICT_UPDATE DICT_UPDATE -#define _DO_CALL 375 -#define _DO_CALL_FUNCTION_EX 376 -#define _DO_CALL_KW 377 -#define _DYNAMIC_EXIT 378 +#define _DO_CALL 372 +#define _DO_CALL_FUNCTION_EX 373 +#define _DO_CALL_KW 374 +#define _DYNAMIC_EXIT 375 #define _END_FOR END_FOR #define _END_SEND END_SEND -#define _ERROR_POP_N 379 +#define _ERROR_POP_N 376 #define _EXIT_INIT_CHECK EXIT_INIT_CHECK -#define _EXPAND_METHOD 380 -#define _EXPAND_METHOD_KW 381 -#define _FATAL_ERROR 382 +#define _EXPAND_METHOD 377 +#define _EXPAND_METHOD_KW 378 +#define _FATAL_ERROR 379 #define _FORMAT_SIMPLE FORMAT_SIMPLE #define _FORMAT_WITH_SPEC FORMAT_WITH_SPEC -#define _FOR_ITER 383 -#define _FOR_ITER_GEN_FRAME 384 -#define _FOR_ITER_TIER_TWO 385 +#define _FOR_ITER 380 +#define _FOR_ITER_GEN_FRAME 381 +#define _FOR_ITER_TIER_TWO 382 #define _GET_AITER GET_AITER #define _GET_ANEXT GET_ANEXT #define _GET_AWAITABLE GET_AWAITABLE #define _GET_ITER GET_ITER #define _GET_LEN GET_LEN #define _GET_YIELD_FROM_ITER GET_YIELD_FROM_ITER -#define _GUARD_BINARY_OP_EXTEND 386 -#define _GUARD_CALLABLE_ISINSTANCE 387 -#define _GUARD_CALLABLE_LEN 388 -#define _GUARD_CALLABLE_LIST_APPEND 389 -#define _GUARD_CALLABLE_STR_1 390 -#define _GUARD_CALLABLE_TUPLE_1 391 -#define _GUARD_CALLABLE_TYPE_1 392 -#define _GUARD_DORV_NO_DICT 393 -#define _GUARD_DORV_VALUES_INST_ATTR_FROM_DICT 394 -#define _GUARD_GLOBALS_VERSION 395 -#define _GUARD_IP_RETURN_GENERATOR 396 -#define _GUARD_IP_RETURN_VALUE 397 -#define _GUARD_IP_YIELD_VALUE 398 -#define _GUARD_IP__PUSH_FRAME 399 -#define _GUARD_IS_FALSE_POP 400 -#define _GUARD_IS_NONE_POP 401 -#define _GUARD_IS_NOT_NONE_POP 402 -#define _GUARD_IS_TRUE_POP 403 -#define _GUARD_KEYS_VERSION 404 -#define _GUARD_NOS_DICT 405 -#define _GUARD_NOS_FLOAT 406 -#define _GUARD_NOS_INT 407 -#define _GUARD_NOS_LIST 408 -#define _GUARD_NOS_NOT_NULL 409 -#define _GUARD_NOS_NULL 410 -#define _GUARD_NOS_OVERFLOWED 411 -#define _GUARD_NOS_TUPLE 412 -#define _GUARD_NOS_UNICODE 413 -#define _GUARD_NOT_EXHAUSTED_LIST 414 -#define _GUARD_NOT_EXHAUSTED_RANGE 415 -#define _GUARD_NOT_EXHAUSTED_TUPLE 416 -#define _GUARD_THIRD_NULL 417 -#define _GUARD_TOS_ANY_SET 418 -#define _GUARD_TOS_DICT 419 -#define _GUARD_TOS_FLOAT 420 -#define _GUARD_TOS_INT 421 -#define _GUARD_TOS_LIST 422 -#define _GUARD_TOS_OVERFLOWED 423 -#define _GUARD_TOS_SLICE 424 -#define _GUARD_TOS_TUPLE 425 -#define _GUARD_TOS_UNICODE 426 -#define _GUARD_TYPE_VERSION 427 -#define _GUARD_TYPE_VERSION_AND_LOCK 428 -#define _HANDLE_PENDING_AND_DEOPT 429 +#define _GUARD_BINARY_OP_EXTEND 383 +#define _GUARD_CALLABLE_ISINSTANCE 384 +#define _GUARD_CALLABLE_LEN 385 +#define _GUARD_CALLABLE_LIST_APPEND 386 +#define _GUARD_CALLABLE_STR_1 387 +#define _GUARD_CALLABLE_TUPLE_1 388 +#define _GUARD_CALLABLE_TYPE_1 389 +#define _GUARD_DORV_NO_DICT 390 +#define _GUARD_DORV_VALUES_INST_ATTR_FROM_DICT 391 +#define _GUARD_GLOBALS_VERSION 392 +#define _GUARD_IP_RETURN_GENERATOR 393 +#define _GUARD_IP_RETURN_VALUE 394 +#define _GUARD_IP_YIELD_VALUE 395 +#define _GUARD_IP__PUSH_FRAME 396 +#define _GUARD_IS_FALSE_POP 397 +#define _GUARD_IS_NONE_POP 398 +#define _GUARD_IS_NOT_NONE_POP 399 +#define _GUARD_IS_TRUE_POP 400 +#define _GUARD_KEYS_VERSION 401 +#define _GUARD_NOS_DICT 402 +#define _GUARD_NOS_FLOAT 403 +#define _GUARD_NOS_INT 404 +#define _GUARD_NOS_LIST 405 +#define _GUARD_NOS_NOT_NULL 406 +#define _GUARD_NOS_NULL 407 +#define _GUARD_NOS_OVERFLOWED 408 +#define _GUARD_NOS_TUPLE 409 +#define _GUARD_NOS_UNICODE 410 +#define _GUARD_NOT_EXHAUSTED_LIST 411 +#define _GUARD_NOT_EXHAUSTED_RANGE 412 +#define _GUARD_NOT_EXHAUSTED_TUPLE 413 +#define _GUARD_THIRD_NULL 414 +#define _GUARD_TOS_ANY_SET 415 +#define _GUARD_TOS_DICT 416 +#define _GUARD_TOS_FLOAT 417 +#define _GUARD_TOS_INT 418 +#define _GUARD_TOS_LIST 419 +#define _GUARD_TOS_OVERFLOWED 420 +#define _GUARD_TOS_SLICE 421 +#define _GUARD_TOS_TUPLE 422 +#define _GUARD_TOS_UNICODE 423 +#define _GUARD_TYPE_VERSION 424 +#define _GUARD_TYPE_VERSION_AND_LOCK 425 +#define _HANDLE_PENDING_AND_DEOPT 426 #define _IMPORT_FROM IMPORT_FROM #define _IMPORT_NAME IMPORT_NAME -#define _INIT_CALL_BOUND_METHOD_EXACT_ARGS 430 -#define _INIT_CALL_PY_EXACT_ARGS 431 -#define _INIT_CALL_PY_EXACT_ARGS_0 432 -#define _INIT_CALL_PY_EXACT_ARGS_1 433 -#define _INIT_CALL_PY_EXACT_ARGS_2 434 -#define _INIT_CALL_PY_EXACT_ARGS_3 435 -#define _INIT_CALL_PY_EXACT_ARGS_4 436 -#define _INSERT_NULL 437 +#define _INIT_CALL_BOUND_METHOD_EXACT_ARGS 427 +#define _INIT_CALL_PY_EXACT_ARGS 428 +#define _INIT_CALL_PY_EXACT_ARGS_0 429 +#define _INIT_CALL_PY_EXACT_ARGS_1 430 +#define _INIT_CALL_PY_EXACT_ARGS_2 431 +#define _INIT_CALL_PY_EXACT_ARGS_3 432 +#define _INIT_CALL_PY_EXACT_ARGS_4 433 +#define _INSERT_NULL 434 #define _INSTRUMENTED_FOR_ITER INSTRUMENTED_FOR_ITER #define _INSTRUMENTED_INSTRUCTION INSTRUMENTED_INSTRUCTION #define _INSTRUMENTED_JUMP_FORWARD INSTRUMENTED_JUMP_FORWARD @@ -191,927 +188,913 @@ extern "C" { #define _INSTRUMENTED_POP_JUMP_IF_NONE INSTRUMENTED_POP_JUMP_IF_NONE #define _INSTRUMENTED_POP_JUMP_IF_NOT_NONE INSTRUMENTED_POP_JUMP_IF_NOT_NONE #define _INSTRUMENTED_POP_JUMP_IF_TRUE INSTRUMENTED_POP_JUMP_IF_TRUE -#define _IS_NONE 438 +#define _IS_NONE 435 #define _IS_OP IS_OP -#define _ITER_CHECK_LIST 439 -#define _ITER_CHECK_RANGE 440 -#define _ITER_CHECK_TUPLE 441 -#define _ITER_JUMP_LIST 442 -#define _ITER_JUMP_RANGE 443 -#define _ITER_JUMP_TUPLE 444 -#define _ITER_NEXT_LIST 445 -#define _ITER_NEXT_LIST_TIER_TWO 446 -#define _ITER_NEXT_RANGE 447 -#define _ITER_NEXT_TUPLE 448 +#define _ITER_CHECK_LIST 436 +#define _ITER_CHECK_RANGE 437 +#define _ITER_CHECK_TUPLE 438 +#define _ITER_JUMP_LIST 439 +#define _ITER_JUMP_RANGE 440 +#define _ITER_JUMP_TUPLE 441 +#define _ITER_NEXT_LIST 442 +#define _ITER_NEXT_LIST_TIER_TWO 443 +#define _ITER_NEXT_RANGE 444 +#define _ITER_NEXT_TUPLE 445 #define _JUMP_BACKWARD_NO_INTERRUPT JUMP_BACKWARD_NO_INTERRUPT -#define _JUMP_TO_TOP 449 +#define _JUMP_TO_TOP 446 #define _LIST_APPEND LIST_APPEND #define _LIST_EXTEND LIST_EXTEND -#define _LOAD_ATTR 450 -#define _LOAD_ATTR_CLASS 451 +#define _LOAD_ATTR 447 +#define _LOAD_ATTR_CLASS 448 #define _LOAD_ATTR_GETATTRIBUTE_OVERRIDDEN LOAD_ATTR_GETATTRIBUTE_OVERRIDDEN -#define _LOAD_ATTR_INSTANCE_VALUE 452 -#define _LOAD_ATTR_METHOD_LAZY_DICT 453 -#define _LOAD_ATTR_METHOD_NO_DICT 454 -#define _LOAD_ATTR_METHOD_WITH_VALUES 455 -#define _LOAD_ATTR_MODULE 456 -#define _LOAD_ATTR_NONDESCRIPTOR_NO_DICT 457 -#define _LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES 458 -#define _LOAD_ATTR_PROPERTY_FRAME 459 -#define _LOAD_ATTR_SLOT 460 -#define _LOAD_ATTR_WITH_HINT 461 +#define _LOAD_ATTR_INSTANCE_VALUE 449 +#define _LOAD_ATTR_METHOD_LAZY_DICT 450 +#define _LOAD_ATTR_METHOD_NO_DICT 451 +#define _LOAD_ATTR_METHOD_WITH_VALUES 452 +#define _LOAD_ATTR_MODULE 453 +#define _LOAD_ATTR_NONDESCRIPTOR_NO_DICT 454 +#define _LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES 455 +#define _LOAD_ATTR_PROPERTY_FRAME 456 +#define _LOAD_ATTR_SLOT 457 +#define _LOAD_ATTR_WITH_HINT 458 #define _LOAD_BUILD_CLASS LOAD_BUILD_CLASS -#define _LOAD_BYTECODE 462 +#define _LOAD_BYTECODE 459 #define _LOAD_COMMON_CONSTANT LOAD_COMMON_CONSTANT #define _LOAD_CONST LOAD_CONST -#define _LOAD_CONST_INLINE 463 -#define _LOAD_CONST_INLINE_BORROW 464 -#define _LOAD_CONST_UNDER_INLINE 465 -#define _LOAD_CONST_UNDER_INLINE_BORROW 466 +#define _LOAD_CONST_INLINE 460 +#define _LOAD_CONST_INLINE_BORROW 461 +#define _LOAD_CONST_UNDER_INLINE 462 +#define _LOAD_CONST_UNDER_INLINE_BORROW 463 #define _LOAD_DEREF LOAD_DEREF -#define _LOAD_FAST 467 -#define _LOAD_FAST_0 468 -#define _LOAD_FAST_1 469 -#define _LOAD_FAST_2 470 -#define _LOAD_FAST_3 471 -#define _LOAD_FAST_4 472 -#define _LOAD_FAST_5 473 -#define _LOAD_FAST_6 474 -#define _LOAD_FAST_7 475 +#define _LOAD_FAST 464 +#define _LOAD_FAST_0 465 +#define _LOAD_FAST_1 466 +#define _LOAD_FAST_2 467 +#define _LOAD_FAST_3 468 +#define _LOAD_FAST_4 469 +#define _LOAD_FAST_5 470 +#define _LOAD_FAST_6 471 +#define _LOAD_FAST_7 472 #define _LOAD_FAST_AND_CLEAR LOAD_FAST_AND_CLEAR -#define _LOAD_FAST_BORROW 476 -#define _LOAD_FAST_BORROW_0 477 -#define _LOAD_FAST_BORROW_1 478 -#define _LOAD_FAST_BORROW_2 479 -#define _LOAD_FAST_BORROW_3 480 -#define _LOAD_FAST_BORROW_4 481 -#define _LOAD_FAST_BORROW_5 482 -#define _LOAD_FAST_BORROW_6 483 -#define _LOAD_FAST_BORROW_7 484 +#define _LOAD_FAST_BORROW 473 +#define _LOAD_FAST_BORROW_0 474 +#define _LOAD_FAST_BORROW_1 475 +#define _LOAD_FAST_BORROW_2 476 +#define _LOAD_FAST_BORROW_3 477 +#define _LOAD_FAST_BORROW_4 478 +#define _LOAD_FAST_BORROW_5 479 +#define _LOAD_FAST_BORROW_6 480 +#define _LOAD_FAST_BORROW_7 481 #define _LOAD_FAST_CHECK LOAD_FAST_CHECK #define _LOAD_FROM_DICT_OR_DEREF LOAD_FROM_DICT_OR_DEREF #define _LOAD_FROM_DICT_OR_GLOBALS LOAD_FROM_DICT_OR_GLOBALS -#define _LOAD_GLOBAL 485 -#define _LOAD_GLOBAL_BUILTINS 486 -#define _LOAD_GLOBAL_MODULE 487 +#define _LOAD_GLOBAL 482 +#define _LOAD_GLOBAL_BUILTINS 483 +#define _LOAD_GLOBAL_MODULE 484 #define _LOAD_LOCALS LOAD_LOCALS #define _LOAD_NAME LOAD_NAME -#define _LOAD_SMALL_INT 488 -#define _LOAD_SMALL_INT_0 489 -#define _LOAD_SMALL_INT_1 490 -#define _LOAD_SMALL_INT_2 491 -#define _LOAD_SMALL_INT_3 492 -#define _LOAD_SPECIAL 493 +#define _LOAD_SMALL_INT 485 +#define _LOAD_SMALL_INT_0 486 +#define _LOAD_SMALL_INT_1 487 +#define _LOAD_SMALL_INT_2 488 +#define _LOAD_SMALL_INT_3 489 +#define _LOAD_SPECIAL 490 #define _LOAD_SUPER_ATTR_ATTR LOAD_SUPER_ATTR_ATTR #define _LOAD_SUPER_ATTR_METHOD LOAD_SUPER_ATTR_METHOD -#define _MAKE_CALLARGS_A_TUPLE 494 +#define _MAKE_CALLARGS_A_TUPLE 491 #define _MAKE_CELL MAKE_CELL #define _MAKE_FUNCTION MAKE_FUNCTION -#define _MAKE_WARM 495 +#define _MAKE_WARM 492 #define _MAP_ADD MAP_ADD #define _MATCH_CLASS MATCH_CLASS #define _MATCH_KEYS MATCH_KEYS #define _MATCH_MAPPING MATCH_MAPPING #define _MATCH_SEQUENCE MATCH_SEQUENCE -#define _MAYBE_EXPAND_METHOD 496 -#define _MAYBE_EXPAND_METHOD_KW 497 -#define _MONITOR_CALL 498 -#define _MONITOR_CALL_KW 499 -#define _MONITOR_JUMP_BACKWARD 500 -#define _MONITOR_RESUME 501 +#define _MAYBE_EXPAND_METHOD 493 +#define _MAYBE_EXPAND_METHOD_KW 494 +#define _MONITOR_CALL 495 +#define _MONITOR_CALL_KW 496 +#define _MONITOR_JUMP_BACKWARD 497 +#define _MONITOR_RESUME 498 #define _NOP NOP -#define _POP_CALL 502 -#define _POP_CALL_LOAD_CONST_INLINE_BORROW 503 -#define _POP_CALL_ONE 504 -#define _POP_CALL_ONE_LOAD_CONST_INLINE_BORROW 505 -#define _POP_CALL_TWO 506 -#define _POP_CALL_TWO_LOAD_CONST_INLINE_BORROW 507 +#define _POP_CALL 499 +#define _POP_CALL_LOAD_CONST_INLINE_BORROW 500 +#define _POP_CALL_ONE 501 +#define _POP_CALL_ONE_LOAD_CONST_INLINE_BORROW 502 +#define _POP_CALL_TWO 503 +#define _POP_CALL_TWO_LOAD_CONST_INLINE_BORROW 504 #define _POP_EXCEPT POP_EXCEPT #define _POP_ITER POP_ITER -#define _POP_JUMP_IF_FALSE 508 -#define _POP_JUMP_IF_TRUE 509 +#define _POP_JUMP_IF_FALSE 505 +#define _POP_JUMP_IF_TRUE 506 #define _POP_TOP POP_TOP -#define _POP_TOP_FLOAT 510 -#define _POP_TOP_INT 511 -#define _POP_TOP_LOAD_CONST_INLINE 512 -#define _POP_TOP_LOAD_CONST_INLINE_BORROW 513 -#define _POP_TOP_NOP 514 -#define _POP_TOP_UNICODE 515 -#define _POP_TWO 516 -#define _POP_TWO_LOAD_CONST_INLINE_BORROW 517 +#define _POP_TOP_FLOAT 507 +#define _POP_TOP_INT 508 +#define _POP_TOP_LOAD_CONST_INLINE 509 +#define _POP_TOP_LOAD_CONST_INLINE_BORROW 510 +#define _POP_TOP_NOP 511 +#define _POP_TOP_UNICODE 512 +#define _POP_TWO 513 +#define _POP_TWO_LOAD_CONST_INLINE_BORROW 514 #define _PUSH_EXC_INFO PUSH_EXC_INFO -#define _PUSH_FRAME 518 +#define _PUSH_FRAME 515 #define _PUSH_NULL PUSH_NULL -#define _PUSH_NULL_CONDITIONAL 519 -#define _PY_FRAME_GENERAL 520 -#define _PY_FRAME_KW 521 -#define _QUICKEN_RESUME 522 -#define _REPLACE_WITH_TRUE 523 +#define _PUSH_NULL_CONDITIONAL 516 +#define _PY_FRAME_GENERAL 517 +#define _PY_FRAME_KW 518 +#define _QUICKEN_RESUME 519 +#define _REPLACE_WITH_TRUE 520 #define _RESUME_CHECK RESUME_CHECK #define _RETURN_GENERATOR RETURN_GENERATOR #define _RETURN_VALUE RETURN_VALUE -#define _SAVE_RETURN_OFFSET 524 -#define _SEND 525 -#define _SEND_GEN_FRAME 526 +#define _SAVE_RETURN_OFFSET 521 +#define _SEND 522 +#define _SEND_GEN_FRAME 523 #define _SETUP_ANNOTATIONS SETUP_ANNOTATIONS #define _SET_ADD SET_ADD #define _SET_FUNCTION_ATTRIBUTE SET_FUNCTION_ATTRIBUTE #define _SET_UPDATE SET_UPDATE -#define _SPILL_OR_RELOAD 527 -#define _START_EXECUTOR 528 -#define _STORE_ATTR 529 -#define _STORE_ATTR_INSTANCE_VALUE 530 -#define _STORE_ATTR_SLOT 531 -#define _STORE_ATTR_WITH_HINT 532 +#define _SPILL_OR_RELOAD 524 +#define _START_EXECUTOR 525 +#define _STORE_ATTR 526 +#define _STORE_ATTR_INSTANCE_VALUE 527 +#define _STORE_ATTR_SLOT 528 +#define _STORE_ATTR_WITH_HINT 529 #define _STORE_DEREF STORE_DEREF -#define _STORE_FAST 533 -#define _STORE_FAST_0 534 -#define _STORE_FAST_1 535 -#define _STORE_FAST_2 536 -#define _STORE_FAST_3 537 -#define _STORE_FAST_4 538 -#define _STORE_FAST_5 539 -#define _STORE_FAST_6 540 -#define _STORE_FAST_7 541 +#define _STORE_FAST 530 +#define _STORE_FAST_0 531 +#define _STORE_FAST_1 532 +#define _STORE_FAST_2 533 +#define _STORE_FAST_3 534 +#define _STORE_FAST_4 535 +#define _STORE_FAST_5 536 +#define _STORE_FAST_6 537 +#define _STORE_FAST_7 538 #define _STORE_GLOBAL STORE_GLOBAL #define _STORE_NAME STORE_NAME -#define _STORE_SLICE 542 -#define _STORE_SUBSCR 543 -#define _STORE_SUBSCR_DICT 544 -#define _STORE_SUBSCR_LIST_INT 545 -#define _SWAP 546 -#define _SWAP_2 547 -#define _SWAP_3 548 -#define _TIER2_RESUME_CHECK 549 -#define _TO_BOOL 550 +#define _STORE_SLICE 539 +#define _STORE_SUBSCR 540 +#define _STORE_SUBSCR_DICT 541 +#define _STORE_SUBSCR_LIST_INT 542 +#define _SWAP 543 +#define _SWAP_2 544 +#define _SWAP_3 545 +#define _TIER2_RESUME_CHECK 546 +#define _TO_BOOL 547 #define _TO_BOOL_BOOL TO_BOOL_BOOL #define _TO_BOOL_INT TO_BOOL_INT -#define _TO_BOOL_LIST 551 +#define _TO_BOOL_LIST 548 #define _TO_BOOL_NONE TO_BOOL_NONE -#define _TO_BOOL_STR 552 +#define _TO_BOOL_STR 549 #define _TRACE_RECORD TRACE_RECORD #define _UNARY_INVERT UNARY_INVERT #define _UNARY_NEGATIVE UNARY_NEGATIVE #define _UNARY_NOT UNARY_NOT #define _UNPACK_EX UNPACK_EX -#define _UNPACK_SEQUENCE 553 -#define _UNPACK_SEQUENCE_LIST 554 -#define _UNPACK_SEQUENCE_TUPLE 555 -#define _UNPACK_SEQUENCE_TWO_TUPLE 556 +#define _UNPACK_SEQUENCE 550 +#define _UNPACK_SEQUENCE_LIST 551 +#define _UNPACK_SEQUENCE_TUPLE 552 +#define _UNPACK_SEQUENCE_TWO_TUPLE 553 #define _WITH_EXCEPT_START WITH_EXCEPT_START #define _YIELD_VALUE YIELD_VALUE -#define MAX_UOP_ID 556 -#define _BINARY_OP_r21 557 -#define _BINARY_OP_ADD_FLOAT_r01 558 -#define _BINARY_OP_ADD_FLOAT_r11 559 -#define _BINARY_OP_ADD_FLOAT_r21 560 -#define _BINARY_OP_ADD_FLOAT_r32 561 -#define _BINARY_OP_ADD_FLOAT__NO_DECREF_INPUTS_r01 562 -#define _BINARY_OP_ADD_FLOAT__NO_DECREF_INPUTS_r11 563 -#define _BINARY_OP_ADD_FLOAT__NO_DECREF_INPUTS_r21 564 -#define _BINARY_OP_ADD_FLOAT__NO_DECREF_INPUTS_r32 565 -#define _BINARY_OP_ADD_INT_r01 566 -#define _BINARY_OP_ADD_INT_r11 567 -#define _BINARY_OP_ADD_INT_r21 568 -#define _BINARY_OP_ADD_INT_r32 569 -#define _BINARY_OP_ADD_UNICODE_r01 570 -#define _BINARY_OP_ADD_UNICODE_r11 571 -#define _BINARY_OP_ADD_UNICODE_r21 572 -#define _BINARY_OP_ADD_UNICODE_r32 573 -#define _BINARY_OP_EXTEND_r21 574 -#define _BINARY_OP_INPLACE_ADD_UNICODE_r20 575 -#define _BINARY_OP_MULTIPLY_FLOAT_r01 576 -#define _BINARY_OP_MULTIPLY_FLOAT_r11 577 -#define _BINARY_OP_MULTIPLY_FLOAT_r21 578 -#define _BINARY_OP_MULTIPLY_FLOAT_r32 579 -#define _BINARY_OP_MULTIPLY_FLOAT__NO_DECREF_INPUTS_r01 580 -#define _BINARY_OP_MULTIPLY_FLOAT__NO_DECREF_INPUTS_r11 581 -#define _BINARY_OP_MULTIPLY_FLOAT__NO_DECREF_INPUTS_r21 582 -#define _BINARY_OP_MULTIPLY_FLOAT__NO_DECREF_INPUTS_r32 583 -#define _BINARY_OP_MULTIPLY_INT_r01 584 -#define _BINARY_OP_MULTIPLY_INT_r11 585 -#define _BINARY_OP_MULTIPLY_INT_r21 586 -#define _BINARY_OP_MULTIPLY_INT_r32 587 -#define _BINARY_OP_SUBSCR_CHECK_FUNC_r23 588 -#define _BINARY_OP_SUBSCR_DICT_r21 589 -#define _BINARY_OP_SUBSCR_INIT_CALL_r01 590 -#define _BINARY_OP_SUBSCR_INIT_CALL_r11 591 -#define _BINARY_OP_SUBSCR_INIT_CALL_r21 592 -#define _BINARY_OP_SUBSCR_INIT_CALL_r31 593 -#define _BINARY_OP_SUBSCR_LIST_INT_r21 594 -#define _BINARY_OP_SUBSCR_LIST_SLICE_r21 595 -#define _BINARY_OP_SUBSCR_STR_INT_r21 596 -#define _BINARY_OP_SUBSCR_TUPLE_INT_r21 597 -#define _BINARY_OP_SUBTRACT_FLOAT_r01 598 -#define _BINARY_OP_SUBTRACT_FLOAT_r11 599 -#define _BINARY_OP_SUBTRACT_FLOAT_r21 600 -#define _BINARY_OP_SUBTRACT_FLOAT_r32 601 -#define _BINARY_OP_SUBTRACT_FLOAT__NO_DECREF_INPUTS_r01 602 -#define _BINARY_OP_SUBTRACT_FLOAT__NO_DECREF_INPUTS_r11 603 -#define _BINARY_OP_SUBTRACT_FLOAT__NO_DECREF_INPUTS_r21 604 -#define _BINARY_OP_SUBTRACT_FLOAT__NO_DECREF_INPUTS_r32 605 -#define _BINARY_OP_SUBTRACT_INT_r01 606 -#define _BINARY_OP_SUBTRACT_INT_r11 607 -#define _BINARY_OP_SUBTRACT_INT_r21 608 -#define _BINARY_OP_SUBTRACT_INT_r32 609 -#define _BINARY_SLICE_r31 610 -#define _BUILD_INTERPOLATION_r01 611 -#define _BUILD_LIST_r01 612 -#define _BUILD_MAP_r01 613 -#define _BUILD_SET_r01 614 -#define _BUILD_SLICE_r01 615 -#define _BUILD_STRING_r01 616 -#define _BUILD_TEMPLATE_r21 617 -#define _BUILD_TUPLE_r01 618 -#define _CALL_BUILTIN_CLASS_r01 619 -#define _CALL_BUILTIN_FAST_r01 620 -#define _CALL_BUILTIN_FAST_WITH_KEYWORDS_r01 621 -#define _CALL_BUILTIN_O_r03 622 -#define _CALL_INTRINSIC_1_r11 623 -#define _CALL_INTRINSIC_2_r21 624 -#define _CALL_ISINSTANCE_r31 625 -#define _CALL_KW_NON_PY_r11 626 -#define _CALL_LEN_r33 627 -#define _CALL_LIST_APPEND_r02 628 -#define _CALL_LIST_APPEND_r12 629 -#define _CALL_LIST_APPEND_r22 630 -#define _CALL_LIST_APPEND_r32 631 -#define _CALL_METHOD_DESCRIPTOR_FAST_r01 632 -#define _CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS_r01 633 -#define _CALL_METHOD_DESCRIPTOR_NOARGS_r01 634 -#define _CALL_METHOD_DESCRIPTOR_O_r01 635 -#define _CALL_NON_PY_GENERAL_r01 636 -#define _CALL_STR_1_r32 637 -#define _CALL_TUPLE_1_r32 638 -#define _CALL_TYPE_1_r31 639 -#define _CHECK_AND_ALLOCATE_OBJECT_r00 640 -#define _CHECK_ATTR_CLASS_r01 641 -#define _CHECK_ATTR_CLASS_r11 642 -#define _CHECK_ATTR_CLASS_r22 643 -#define _CHECK_ATTR_CLASS_r33 644 -#define _CHECK_ATTR_METHOD_LAZY_DICT_r01 645 -#define _CHECK_ATTR_METHOD_LAZY_DICT_r11 646 -#define _CHECK_ATTR_METHOD_LAZY_DICT_r22 647 -#define _CHECK_ATTR_METHOD_LAZY_DICT_r33 648 -#define _CHECK_CALL_BOUND_METHOD_EXACT_ARGS_r00 649 -#define _CHECK_EG_MATCH_r22 650 -#define _CHECK_EXC_MATCH_r22 651 -#define _CHECK_FUNCTION_EXACT_ARGS_r00 652 -#define _CHECK_FUNCTION_VERSION_r00 653 -#define _CHECK_FUNCTION_VERSION_INLINE_r00 654 -#define _CHECK_FUNCTION_VERSION_INLINE_r11 655 -#define _CHECK_FUNCTION_VERSION_INLINE_r22 656 -#define _CHECK_FUNCTION_VERSION_INLINE_r33 657 -#define _CHECK_FUNCTION_VERSION_KW_r11 658 -#define _CHECK_IS_NOT_PY_CALLABLE_r00 659 -#define _CHECK_IS_NOT_PY_CALLABLE_KW_r11 660 -#define _CHECK_MANAGED_OBJECT_HAS_VALUES_r01 661 -#define _CHECK_MANAGED_OBJECT_HAS_VALUES_r11 662 -#define _CHECK_MANAGED_OBJECT_HAS_VALUES_r22 663 -#define _CHECK_MANAGED_OBJECT_HAS_VALUES_r33 664 -#define _CHECK_METHOD_VERSION_r00 665 -#define _CHECK_METHOD_VERSION_KW_r11 666 -#define _CHECK_PEP_523_r00 667 -#define _CHECK_PEP_523_r11 668 -#define _CHECK_PEP_523_r22 669 -#define _CHECK_PEP_523_r33 670 -#define _CHECK_PERIODIC_r00 671 -#define _CHECK_PERIODIC_AT_END_r00 672 -#define _CHECK_PERIODIC_IF_NOT_YIELD_FROM_r00 673 -#define _CHECK_RECURSION_REMAINING_r00 674 -#define _CHECK_RECURSION_REMAINING_r11 675 -#define _CHECK_RECURSION_REMAINING_r22 676 -#define _CHECK_RECURSION_REMAINING_r33 677 -#define _CHECK_STACK_SPACE_r00 678 -#define _CHECK_STACK_SPACE_OPERAND_r00 679 -#define _CHECK_STACK_SPACE_OPERAND_r11 680 -#define _CHECK_STACK_SPACE_OPERAND_r22 681 -#define _CHECK_STACK_SPACE_OPERAND_r33 682 -#define _CHECK_VALIDITY_r00 683 -#define _CHECK_VALIDITY_r11 684 -#define _CHECK_VALIDITY_r22 685 -#define _CHECK_VALIDITY_r33 686 -#define _COLD_DYNAMIC_EXIT_r00 687 -#define _COLD_EXIT_r00 688 -#define _COMPARE_OP_r21 689 -#define _COMPARE_OP_FLOAT_r01 690 -#define _COMPARE_OP_FLOAT_r11 691 -#define _COMPARE_OP_FLOAT_r21 692 -#define _COMPARE_OP_FLOAT_r32 693 -#define _COMPARE_OP_INT_r21 694 -#define _COMPARE_OP_STR_r21 695 -#define _CONTAINS_OP_r21 696 -#define _CONTAINS_OP_DICT_r21 697 -#define _CONTAINS_OP_SET_r21 698 -#define _CONVERT_VALUE_r11 699 -#define _COPY_r01 700 -#define _COPY_1_r02 701 -#define _COPY_1_r12 702 -#define _COPY_1_r23 703 -#define _COPY_2_r03 704 -#define _COPY_2_r13 705 -#define _COPY_2_r23 706 -#define _COPY_3_r03 707 -#define _COPY_3_r13 708 -#define _COPY_3_r23 709 -#define _COPY_3_r33 710 -#define _COPY_FREE_VARS_r00 711 -#define _COPY_FREE_VARS_r11 712 -#define _COPY_FREE_VARS_r22 713 -#define _COPY_FREE_VARS_r33 714 -#define _CREATE_INIT_FRAME_r01 715 -#define _DELETE_ATTR_r10 716 -#define _DELETE_DEREF_r00 717 -#define _DELETE_FAST_r00 718 -#define _DELETE_GLOBAL_r00 719 -#define _DELETE_NAME_r00 720 -#define _DELETE_SUBSCR_r20 721 -#define _DEOPT_r00 722 -#define _DEOPT_r10 723 -#define _DEOPT_r20 724 -#define _DEOPT_r30 725 -#define _DICT_MERGE_r10 726 -#define _DICT_UPDATE_r10 727 -#define _DO_CALL_r01 728 -#define _DO_CALL_FUNCTION_EX_r31 729 -#define _DO_CALL_KW_r11 730 -#define _DYNAMIC_EXIT_r00 731 -#define _DYNAMIC_EXIT_r10 732 -#define _DYNAMIC_EXIT_r20 733 -#define _DYNAMIC_EXIT_r30 734 -#define _END_FOR_r10 735 -#define _END_SEND_r21 736 -#define _ERROR_POP_N_r00 737 -#define _EXIT_INIT_CHECK_r10 738 -#define _EXIT_TRACE_r00 739 -#define _EXIT_TRACE_r10 740 -#define _EXIT_TRACE_r20 741 -#define _EXIT_TRACE_r30 742 -#define _EXPAND_METHOD_r00 743 -#define _EXPAND_METHOD_KW_r11 744 -#define _FATAL_ERROR_r00 745 -#define _FATAL_ERROR_r11 746 -#define _FATAL_ERROR_r22 747 -#define _FATAL_ERROR_r33 748 -#define _FORMAT_SIMPLE_r11 749 -#define _FORMAT_WITH_SPEC_r21 750 -#define _FOR_ITER_r23 751 -#define _FOR_ITER_GEN_FRAME_r23 752 -#define _FOR_ITER_TIER_TWO_r23 753 -#define _GET_AITER_r11 754 -#define _GET_ANEXT_r12 755 -#define _GET_AWAITABLE_r11 756 -#define _GET_ITER_r12 757 -#define _GET_LEN_r12 758 -#define _GET_YIELD_FROM_ITER_r11 759 -#define _GUARD_BINARY_OP_EXTEND_r22 760 -#define _GUARD_CALLABLE_ISINSTANCE_r03 761 -#define _GUARD_CALLABLE_ISINSTANCE_r13 762 -#define _GUARD_CALLABLE_ISINSTANCE_r23 763 -#define _GUARD_CALLABLE_ISINSTANCE_r33 764 -#define _GUARD_CALLABLE_LEN_r03 765 -#define _GUARD_CALLABLE_LEN_r13 766 -#define _GUARD_CALLABLE_LEN_r23 767 -#define _GUARD_CALLABLE_LEN_r33 768 -#define _GUARD_CALLABLE_LIST_APPEND_r03 769 -#define _GUARD_CALLABLE_LIST_APPEND_r13 770 -#define _GUARD_CALLABLE_LIST_APPEND_r23 771 -#define _GUARD_CALLABLE_LIST_APPEND_r33 772 -#define _GUARD_CALLABLE_STR_1_r03 773 -#define _GUARD_CALLABLE_STR_1_r13 774 -#define _GUARD_CALLABLE_STR_1_r23 775 -#define _GUARD_CALLABLE_STR_1_r33 776 -#define _GUARD_CALLABLE_TUPLE_1_r03 777 -#define _GUARD_CALLABLE_TUPLE_1_r13 778 -#define _GUARD_CALLABLE_TUPLE_1_r23 779 -#define _GUARD_CALLABLE_TUPLE_1_r33 780 -#define _GUARD_CALLABLE_TYPE_1_r03 781 -#define _GUARD_CALLABLE_TYPE_1_r13 782 -#define _GUARD_CALLABLE_TYPE_1_r23 783 -#define _GUARD_CALLABLE_TYPE_1_r33 784 -#define _GUARD_DORV_NO_DICT_r01 785 -#define _GUARD_DORV_NO_DICT_r11 786 -#define _GUARD_DORV_NO_DICT_r22 787 -#define _GUARD_DORV_NO_DICT_r33 788 -#define _GUARD_DORV_VALUES_INST_ATTR_FROM_DICT_r01 789 -#define _GUARD_DORV_VALUES_INST_ATTR_FROM_DICT_r11 790 -#define _GUARD_DORV_VALUES_INST_ATTR_FROM_DICT_r22 791 -#define _GUARD_DORV_VALUES_INST_ATTR_FROM_DICT_r33 792 -#define _GUARD_GLOBALS_VERSION_r00 793 -#define _GUARD_GLOBALS_VERSION_r11 794 -#define _GUARD_GLOBALS_VERSION_r22 795 -#define _GUARD_GLOBALS_VERSION_r33 796 -#define _GUARD_IP_RETURN_GENERATOR_r00 797 -#define _GUARD_IP_RETURN_GENERATOR_r11 798 -#define _GUARD_IP_RETURN_GENERATOR_r22 799 -#define _GUARD_IP_RETURN_GENERATOR_r33 800 -#define _GUARD_IP_RETURN_VALUE_r00 801 -#define _GUARD_IP_RETURN_VALUE_r11 802 -#define _GUARD_IP_RETURN_VALUE_r22 803 -#define _GUARD_IP_RETURN_VALUE_r33 804 -#define _GUARD_IP_YIELD_VALUE_r00 805 -#define _GUARD_IP_YIELD_VALUE_r11 806 -#define _GUARD_IP_YIELD_VALUE_r22 807 -#define _GUARD_IP_YIELD_VALUE_r33 808 -#define _GUARD_IP__PUSH_FRAME_r00 809 -#define _GUARD_IP__PUSH_FRAME_r11 810 -#define _GUARD_IP__PUSH_FRAME_r22 811 -#define _GUARD_IP__PUSH_FRAME_r33 812 -#define _GUARD_IS_FALSE_POP_r00 813 -#define _GUARD_IS_FALSE_POP_r10 814 -#define _GUARD_IS_FALSE_POP_r21 815 -#define _GUARD_IS_FALSE_POP_r32 816 -#define _GUARD_IS_NONE_POP_r00 817 -#define _GUARD_IS_NONE_POP_r10 818 -#define _GUARD_IS_NONE_POP_r21 819 -#define _GUARD_IS_NONE_POP_r32 820 -#define _GUARD_IS_NOT_NONE_POP_r10 821 -#define _GUARD_IS_TRUE_POP_r00 822 -#define _GUARD_IS_TRUE_POP_r10 823 -#define _GUARD_IS_TRUE_POP_r21 824 -#define _GUARD_IS_TRUE_POP_r32 825 -#define _GUARD_KEYS_VERSION_r01 826 -#define _GUARD_KEYS_VERSION_r11 827 -#define _GUARD_KEYS_VERSION_r22 828 -#define _GUARD_KEYS_VERSION_r33 829 -#define _GUARD_NOS_DICT_r02 830 -#define _GUARD_NOS_DICT_r12 831 -#define _GUARD_NOS_DICT_r22 832 -#define _GUARD_NOS_DICT_r33 833 -#define _GUARD_NOS_FLOAT_r02 834 -#define _GUARD_NOS_FLOAT_r12 835 -#define _GUARD_NOS_FLOAT_r22 836 -#define _GUARD_NOS_FLOAT_r33 837 -#define _GUARD_NOS_INT_r02 838 -#define _GUARD_NOS_INT_r12 839 -#define _GUARD_NOS_INT_r22 840 -#define _GUARD_NOS_INT_r33 841 -#define _GUARD_NOS_LIST_r02 842 -#define _GUARD_NOS_LIST_r12 843 -#define _GUARD_NOS_LIST_r22 844 -#define _GUARD_NOS_LIST_r33 845 -#define _GUARD_NOS_NOT_NULL_r02 846 -#define _GUARD_NOS_NOT_NULL_r12 847 -#define _GUARD_NOS_NOT_NULL_r22 848 -#define _GUARD_NOS_NOT_NULL_r33 849 -#define _GUARD_NOS_NULL_r02 850 -#define _GUARD_NOS_NULL_r12 851 -#define _GUARD_NOS_NULL_r22 852 -#define _GUARD_NOS_NULL_r33 853 -#define _GUARD_NOS_OVERFLOWED_r02 854 -#define _GUARD_NOS_OVERFLOWED_r12 855 -#define _GUARD_NOS_OVERFLOWED_r22 856 -#define _GUARD_NOS_OVERFLOWED_r33 857 -#define _GUARD_NOS_TUPLE_r02 858 -#define _GUARD_NOS_TUPLE_r12 859 -#define _GUARD_NOS_TUPLE_r22 860 -#define _GUARD_NOS_TUPLE_r33 861 -#define _GUARD_NOS_UNICODE_r02 862 -#define _GUARD_NOS_UNICODE_r12 863 -#define _GUARD_NOS_UNICODE_r22 864 -#define _GUARD_NOS_UNICODE_r33 865 -#define _GUARD_NOT_EXHAUSTED_LIST_r02 866 -#define _GUARD_NOT_EXHAUSTED_LIST_r12 867 -#define _GUARD_NOT_EXHAUSTED_LIST_r22 868 -#define _GUARD_NOT_EXHAUSTED_LIST_r33 869 -#define _GUARD_NOT_EXHAUSTED_RANGE_r02 870 -#define _GUARD_NOT_EXHAUSTED_RANGE_r12 871 -#define _GUARD_NOT_EXHAUSTED_RANGE_r22 872 -#define _GUARD_NOT_EXHAUSTED_RANGE_r33 873 -#define _GUARD_NOT_EXHAUSTED_TUPLE_r02 874 -#define _GUARD_NOT_EXHAUSTED_TUPLE_r12 875 -#define _GUARD_NOT_EXHAUSTED_TUPLE_r22 876 -#define _GUARD_NOT_EXHAUSTED_TUPLE_r33 877 -#define _GUARD_THIRD_NULL_r03 878 -#define _GUARD_THIRD_NULL_r13 879 -#define _GUARD_THIRD_NULL_r23 880 -#define _GUARD_THIRD_NULL_r33 881 -#define _GUARD_TOS_ANY_SET_r01 882 -#define _GUARD_TOS_ANY_SET_r11 883 -#define _GUARD_TOS_ANY_SET_r22 884 -#define _GUARD_TOS_ANY_SET_r33 885 -#define _GUARD_TOS_DICT_r01 886 -#define _GUARD_TOS_DICT_r11 887 -#define _GUARD_TOS_DICT_r22 888 -#define _GUARD_TOS_DICT_r33 889 -#define _GUARD_TOS_FLOAT_r01 890 -#define _GUARD_TOS_FLOAT_r11 891 -#define _GUARD_TOS_FLOAT_r22 892 -#define _GUARD_TOS_FLOAT_r33 893 -#define _GUARD_TOS_INT_r01 894 -#define _GUARD_TOS_INT_r11 895 -#define _GUARD_TOS_INT_r22 896 -#define _GUARD_TOS_INT_r33 897 -#define _GUARD_TOS_LIST_r01 898 -#define _GUARD_TOS_LIST_r11 899 -#define _GUARD_TOS_LIST_r22 900 -#define _GUARD_TOS_LIST_r33 901 -#define _GUARD_TOS_OVERFLOWED_r01 902 -#define _GUARD_TOS_OVERFLOWED_r11 903 -#define _GUARD_TOS_OVERFLOWED_r22 904 -#define _GUARD_TOS_OVERFLOWED_r33 905 -#define _GUARD_TOS_SLICE_r01 906 -#define _GUARD_TOS_SLICE_r11 907 -#define _GUARD_TOS_SLICE_r22 908 -#define _GUARD_TOS_SLICE_r33 909 -#define _GUARD_TOS_TUPLE_r01 910 -#define _GUARD_TOS_TUPLE_r11 911 -#define _GUARD_TOS_TUPLE_r22 912 -#define _GUARD_TOS_TUPLE_r33 913 -#define _GUARD_TOS_UNICODE_r01 914 -#define _GUARD_TOS_UNICODE_r11 915 -#define _GUARD_TOS_UNICODE_r22 916 -#define _GUARD_TOS_UNICODE_r33 917 -#define _GUARD_TYPE_VERSION_r01 918 -#define _GUARD_TYPE_VERSION_r11 919 -#define _GUARD_TYPE_VERSION_r22 920 -#define _GUARD_TYPE_VERSION_r33 921 -#define _GUARD_TYPE_VERSION_AND_LOCK_r01 922 -#define _GUARD_TYPE_VERSION_AND_LOCK_r11 923 -#define _GUARD_TYPE_VERSION_AND_LOCK_r22 924 -#define _GUARD_TYPE_VERSION_AND_LOCK_r33 925 -#define _HANDLE_PENDING_AND_DEOPT_r00 926 -#define _HANDLE_PENDING_AND_DEOPT_r10 927 -#define _HANDLE_PENDING_AND_DEOPT_r20 928 -#define _HANDLE_PENDING_AND_DEOPT_r30 929 -#define _IMPORT_FROM_r12 930 -#define _IMPORT_NAME_r21 931 -#define _INIT_CALL_BOUND_METHOD_EXACT_ARGS_r00 932 -#define _INIT_CALL_PY_EXACT_ARGS_r01 933 -#define _INIT_CALL_PY_EXACT_ARGS_0_r01 934 -#define _INIT_CALL_PY_EXACT_ARGS_1_r01 935 -#define _INIT_CALL_PY_EXACT_ARGS_2_r01 936 -#define _INIT_CALL_PY_EXACT_ARGS_3_r01 937 -#define _INIT_CALL_PY_EXACT_ARGS_4_r01 938 -#define _INSERT_NULL_r10 939 -#define _INSTRUMENTED_FOR_ITER_r23 940 -#define _INSTRUMENTED_INSTRUCTION_r00 941 -#define _INSTRUMENTED_JUMP_FORWARD_r00 942 -#define _INSTRUMENTED_JUMP_FORWARD_r11 943 -#define _INSTRUMENTED_JUMP_FORWARD_r22 944 -#define _INSTRUMENTED_JUMP_FORWARD_r33 945 -#define _INSTRUMENTED_LINE_r00 946 -#define _INSTRUMENTED_NOT_TAKEN_r00 947 -#define _INSTRUMENTED_NOT_TAKEN_r11 948 -#define _INSTRUMENTED_NOT_TAKEN_r22 949 -#define _INSTRUMENTED_NOT_TAKEN_r33 950 -#define _INSTRUMENTED_POP_JUMP_IF_FALSE_r00 951 -#define _INSTRUMENTED_POP_JUMP_IF_FALSE_r10 952 -#define _INSTRUMENTED_POP_JUMP_IF_FALSE_r21 953 -#define _INSTRUMENTED_POP_JUMP_IF_FALSE_r32 954 -#define _INSTRUMENTED_POP_JUMP_IF_NONE_r10 955 -#define _INSTRUMENTED_POP_JUMP_IF_NOT_NONE_r10 956 -#define _INSTRUMENTED_POP_JUMP_IF_TRUE_r00 957 -#define _INSTRUMENTED_POP_JUMP_IF_TRUE_r10 958 -#define _INSTRUMENTED_POP_JUMP_IF_TRUE_r21 959 -#define _INSTRUMENTED_POP_JUMP_IF_TRUE_r32 960 -#define _IS_NONE_r11 961 -#define _IS_OP_r21 962 -#define _ITER_CHECK_LIST_r02 963 -#define _ITER_CHECK_LIST_r12 964 -#define _ITER_CHECK_LIST_r22 965 -#define _ITER_CHECK_LIST_r33 966 -#define _ITER_CHECK_RANGE_r02 967 -#define _ITER_CHECK_RANGE_r12 968 -#define _ITER_CHECK_RANGE_r22 969 -#define _ITER_CHECK_RANGE_r33 970 -#define _ITER_CHECK_TUPLE_r02 971 -#define _ITER_CHECK_TUPLE_r12 972 -#define _ITER_CHECK_TUPLE_r22 973 -#define _ITER_CHECK_TUPLE_r33 974 -#define _ITER_JUMP_LIST_r02 975 -#define _ITER_JUMP_LIST_r12 976 -#define _ITER_JUMP_LIST_r22 977 -#define _ITER_JUMP_LIST_r33 978 -#define _ITER_JUMP_RANGE_r02 979 -#define _ITER_JUMP_RANGE_r12 980 -#define _ITER_JUMP_RANGE_r22 981 -#define _ITER_JUMP_RANGE_r33 982 -#define _ITER_JUMP_TUPLE_r02 983 -#define _ITER_JUMP_TUPLE_r12 984 -#define _ITER_JUMP_TUPLE_r22 985 -#define _ITER_JUMP_TUPLE_r33 986 -#define _ITER_NEXT_LIST_r23 987 -#define _ITER_NEXT_LIST_TIER_TWO_r23 988 -#define _ITER_NEXT_RANGE_r03 989 -#define _ITER_NEXT_RANGE_r13 990 -#define _ITER_NEXT_RANGE_r23 991 -#define _ITER_NEXT_TUPLE_r03 992 -#define _ITER_NEXT_TUPLE_r13 993 -#define _ITER_NEXT_TUPLE_r23 994 -#define _JUMP_BACKWARD_NO_INTERRUPT_r00 995 -#define _JUMP_BACKWARD_NO_INTERRUPT_r11 996 -#define _JUMP_BACKWARD_NO_INTERRUPT_r22 997 -#define _JUMP_BACKWARD_NO_INTERRUPT_r33 998 -#define _JUMP_TO_TOP_r00 999 -#define _LIST_APPEND_r10 1000 -#define _LIST_EXTEND_r10 1001 -#define _LOAD_ATTR_r10 1002 -#define _LOAD_ATTR_CLASS_r11 1003 -#define _LOAD_ATTR_GETATTRIBUTE_OVERRIDDEN_r11 1004 -#define _LOAD_ATTR_INSTANCE_VALUE_r11 1005 -#define _LOAD_ATTR_METHOD_LAZY_DICT_r02 1006 -#define _LOAD_ATTR_METHOD_LAZY_DICT_r12 1007 -#define _LOAD_ATTR_METHOD_LAZY_DICT_r23 1008 -#define _LOAD_ATTR_METHOD_NO_DICT_r02 1009 -#define _LOAD_ATTR_METHOD_NO_DICT_r12 1010 -#define _LOAD_ATTR_METHOD_NO_DICT_r23 1011 -#define _LOAD_ATTR_METHOD_WITH_VALUES_r02 1012 -#define _LOAD_ATTR_METHOD_WITH_VALUES_r12 1013 -#define _LOAD_ATTR_METHOD_WITH_VALUES_r23 1014 -#define _LOAD_ATTR_MODULE_r11 1015 -#define _LOAD_ATTR_NONDESCRIPTOR_NO_DICT_r11 1016 -#define _LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES_r11 1017 -#define _LOAD_ATTR_PROPERTY_FRAME_r11 1018 -#define _LOAD_ATTR_SLOT_r11 1019 -#define _LOAD_ATTR_WITH_HINT_r11 1020 -#define _LOAD_BUILD_CLASS_r01 1021 -#define _LOAD_BYTECODE_r00 1022 -#define _LOAD_COMMON_CONSTANT_r01 1023 -#define _LOAD_COMMON_CONSTANT_r12 1024 -#define _LOAD_COMMON_CONSTANT_r23 1025 -#define _LOAD_CONST_r01 1026 -#define _LOAD_CONST_r12 1027 -#define _LOAD_CONST_r23 1028 -#define _LOAD_CONST_INLINE_r01 1029 -#define _LOAD_CONST_INLINE_r12 1030 -#define _LOAD_CONST_INLINE_r23 1031 -#define _LOAD_CONST_INLINE_BORROW_r01 1032 -#define _LOAD_CONST_INLINE_BORROW_r12 1033 -#define _LOAD_CONST_INLINE_BORROW_r23 1034 -#define _LOAD_CONST_UNDER_INLINE_r02 1035 -#define _LOAD_CONST_UNDER_INLINE_r12 1036 -#define _LOAD_CONST_UNDER_INLINE_r23 1037 -#define _LOAD_CONST_UNDER_INLINE_BORROW_r02 1038 -#define _LOAD_CONST_UNDER_INLINE_BORROW_r12 1039 -#define _LOAD_CONST_UNDER_INLINE_BORROW_r23 1040 -#define _LOAD_DEREF_r01 1041 -#define _LOAD_FAST_r01 1042 -#define _LOAD_FAST_r12 1043 -#define _LOAD_FAST_r23 1044 -#define _LOAD_FAST_0_r01 1045 -#define _LOAD_FAST_0_r12 1046 -#define _LOAD_FAST_0_r23 1047 -#define _LOAD_FAST_1_r01 1048 -#define _LOAD_FAST_1_r12 1049 -#define _LOAD_FAST_1_r23 1050 -#define _LOAD_FAST_2_r01 1051 -#define _LOAD_FAST_2_r12 1052 -#define _LOAD_FAST_2_r23 1053 -#define _LOAD_FAST_3_r01 1054 -#define _LOAD_FAST_3_r12 1055 -#define _LOAD_FAST_3_r23 1056 -#define _LOAD_FAST_4_r01 1057 -#define _LOAD_FAST_4_r12 1058 -#define _LOAD_FAST_4_r23 1059 -#define _LOAD_FAST_5_r01 1060 -#define _LOAD_FAST_5_r12 1061 -#define _LOAD_FAST_5_r23 1062 -#define _LOAD_FAST_6_r01 1063 -#define _LOAD_FAST_6_r12 1064 -#define _LOAD_FAST_6_r23 1065 -#define _LOAD_FAST_7_r01 1066 -#define _LOAD_FAST_7_r12 1067 -#define _LOAD_FAST_7_r23 1068 -#define _LOAD_FAST_AND_CLEAR_r01 1069 -#define _LOAD_FAST_AND_CLEAR_r12 1070 -#define _LOAD_FAST_AND_CLEAR_r23 1071 -#define _LOAD_FAST_BORROW_r01 1072 -#define _LOAD_FAST_BORROW_r12 1073 -#define _LOAD_FAST_BORROW_r23 1074 -#define _LOAD_FAST_BORROW_0_r01 1075 -#define _LOAD_FAST_BORROW_0_r12 1076 -#define _LOAD_FAST_BORROW_0_r23 1077 -#define _LOAD_FAST_BORROW_1_r01 1078 -#define _LOAD_FAST_BORROW_1_r12 1079 -#define _LOAD_FAST_BORROW_1_r23 1080 -#define _LOAD_FAST_BORROW_2_r01 1081 -#define _LOAD_FAST_BORROW_2_r12 1082 -#define _LOAD_FAST_BORROW_2_r23 1083 -#define _LOAD_FAST_BORROW_3_r01 1084 -#define _LOAD_FAST_BORROW_3_r12 1085 -#define _LOAD_FAST_BORROW_3_r23 1086 -#define _LOAD_FAST_BORROW_4_r01 1087 -#define _LOAD_FAST_BORROW_4_r12 1088 -#define _LOAD_FAST_BORROW_4_r23 1089 -#define _LOAD_FAST_BORROW_5_r01 1090 -#define _LOAD_FAST_BORROW_5_r12 1091 -#define _LOAD_FAST_BORROW_5_r23 1092 -#define _LOAD_FAST_BORROW_6_r01 1093 -#define _LOAD_FAST_BORROW_6_r12 1094 -#define _LOAD_FAST_BORROW_6_r23 1095 -#define _LOAD_FAST_BORROW_7_r01 1096 -#define _LOAD_FAST_BORROW_7_r12 1097 -#define _LOAD_FAST_BORROW_7_r23 1098 -#define _LOAD_FAST_BORROW_LOAD_FAST_BORROW_r02 1099 -#define _LOAD_FAST_BORROW_LOAD_FAST_BORROW_r13 1100 -#define _LOAD_FAST_CHECK_r01 1101 -#define _LOAD_FAST_LOAD_FAST_r02 1102 -#define _LOAD_FAST_LOAD_FAST_r13 1103 -#define _LOAD_FROM_DICT_OR_DEREF_r11 1104 -#define _LOAD_FROM_DICT_OR_GLOBALS_r11 1105 -#define _LOAD_GLOBAL_r00 1106 -#define _LOAD_GLOBAL_BUILTINS_r01 1107 -#define _LOAD_GLOBAL_MODULE_r01 1108 -#define _LOAD_LOCALS_r01 1109 -#define _LOAD_NAME_r01 1110 -#define _LOAD_SMALL_INT_r01 1111 -#define _LOAD_SMALL_INT_r12 1112 -#define _LOAD_SMALL_INT_r23 1113 -#define _LOAD_SMALL_INT_0_r01 1114 -#define _LOAD_SMALL_INT_0_r12 1115 -#define _LOAD_SMALL_INT_0_r23 1116 -#define _LOAD_SMALL_INT_1_r01 1117 -#define _LOAD_SMALL_INT_1_r12 1118 -#define _LOAD_SMALL_INT_1_r23 1119 -#define _LOAD_SMALL_INT_2_r01 1120 -#define _LOAD_SMALL_INT_2_r12 1121 -#define _LOAD_SMALL_INT_2_r23 1122 -#define _LOAD_SMALL_INT_3_r01 1123 -#define _LOAD_SMALL_INT_3_r12 1124 -#define _LOAD_SMALL_INT_3_r23 1125 -#define _LOAD_SPECIAL_r00 1126 -#define _LOAD_SUPER_ATTR_ATTR_r31 1127 -#define _LOAD_SUPER_ATTR_METHOD_r32 1128 -#define _MAKE_CALLARGS_A_TUPLE_r33 1129 -#define _MAKE_CELL_r00 1130 -#define _MAKE_FUNCTION_r11 1131 -#define _MAKE_WARM_r00 1132 -#define _MAKE_WARM_r11 1133 -#define _MAKE_WARM_r22 1134 -#define _MAKE_WARM_r33 1135 -#define _MAP_ADD_r20 1136 -#define _MATCH_CLASS_r31 1137 -#define _MATCH_KEYS_r23 1138 -#define _MATCH_MAPPING_r02 1139 -#define _MATCH_MAPPING_r12 1140 -#define _MATCH_MAPPING_r23 1141 -#define _MATCH_SEQUENCE_r02 1142 -#define _MATCH_SEQUENCE_r12 1143 -#define _MATCH_SEQUENCE_r23 1144 -#define _MAYBE_EXPAND_METHOD_r00 1145 -#define _MAYBE_EXPAND_METHOD_KW_r11 1146 -#define _MONITOR_CALL_r00 1147 -#define _MONITOR_CALL_KW_r11 1148 -#define _MONITOR_JUMP_BACKWARD_r00 1149 -#define _MONITOR_JUMP_BACKWARD_r11 1150 -#define _MONITOR_JUMP_BACKWARD_r22 1151 -#define _MONITOR_JUMP_BACKWARD_r33 1152 -#define _MONITOR_RESUME_r00 1153 -#define _NOP_r00 1154 -#define _NOP_r11 1155 -#define _NOP_r22 1156 -#define _NOP_r33 1157 -#define _POP_CALL_r20 1158 -#define _POP_CALL_LOAD_CONST_INLINE_BORROW_r21 1159 -#define _POP_CALL_ONE_r30 1160 -#define _POP_CALL_ONE_LOAD_CONST_INLINE_BORROW_r31 1161 -#define _POP_CALL_TWO_r30 1162 -#define _POP_CALL_TWO_LOAD_CONST_INLINE_BORROW_r31 1163 -#define _POP_EXCEPT_r10 1164 -#define _POP_ITER_r20 1165 -#define _POP_JUMP_IF_FALSE_r00 1166 -#define _POP_JUMP_IF_FALSE_r10 1167 -#define _POP_JUMP_IF_FALSE_r21 1168 -#define _POP_JUMP_IF_FALSE_r32 1169 -#define _POP_JUMP_IF_TRUE_r00 1170 -#define _POP_JUMP_IF_TRUE_r10 1171 -#define _POP_JUMP_IF_TRUE_r21 1172 -#define _POP_JUMP_IF_TRUE_r32 1173 -#define _POP_TOP_r10 1174 -#define _POP_TOP_FLOAT_r00 1175 -#define _POP_TOP_FLOAT_r10 1176 -#define _POP_TOP_FLOAT_r21 1177 -#define _POP_TOP_FLOAT_r32 1178 -#define _POP_TOP_INT_r00 1179 -#define _POP_TOP_INT_r10 1180 -#define _POP_TOP_INT_r21 1181 -#define _POP_TOP_INT_r32 1182 -#define _POP_TOP_LOAD_CONST_INLINE_r11 1183 -#define _POP_TOP_LOAD_CONST_INLINE_BORROW_r11 1184 -#define _POP_TOP_NOP_r00 1185 -#define _POP_TOP_NOP_r10 1186 -#define _POP_TOP_NOP_r21 1187 -#define _POP_TOP_NOP_r32 1188 -#define _POP_TOP_UNICODE_r00 1189 -#define _POP_TOP_UNICODE_r10 1190 -#define _POP_TOP_UNICODE_r21 1191 -#define _POP_TOP_UNICODE_r32 1192 -#define _POP_TWO_r20 1193 -#define _POP_TWO_LOAD_CONST_INLINE_BORROW_r21 1194 -#define _PUSH_EXC_INFO_r02 1195 -#define _PUSH_EXC_INFO_r12 1196 -#define _PUSH_EXC_INFO_r23 1197 -#define _PUSH_FRAME_r10 1198 -#define _PUSH_NULL_r01 1199 -#define _PUSH_NULL_r12 1200 -#define _PUSH_NULL_r23 1201 -#define _PUSH_NULL_CONDITIONAL_r00 1202 -#define _PY_FRAME_GENERAL_r01 1203 -#define _PY_FRAME_KW_r11 1204 -#define _QUICKEN_RESUME_r00 1205 -#define _QUICKEN_RESUME_r11 1206 -#define _QUICKEN_RESUME_r22 1207 -#define _QUICKEN_RESUME_r33 1208 -#define _REPLACE_WITH_TRUE_r11 1209 -#define _RESUME_CHECK_r00 1210 -#define _RESUME_CHECK_r11 1211 -#define _RESUME_CHECK_r22 1212 -#define _RESUME_CHECK_r33 1213 -#define _RETURN_GENERATOR_r01 1214 -#define _RETURN_VALUE_r11 1215 -#define _SAVE_RETURN_OFFSET_r00 1216 -#define _SAVE_RETURN_OFFSET_r11 1217 -#define _SAVE_RETURN_OFFSET_r22 1218 -#define _SAVE_RETURN_OFFSET_r33 1219 -#define _SEND_r22 1220 -#define _SEND_GEN_FRAME_r22 1221 -#define _SETUP_ANNOTATIONS_r00 1222 -#define _SET_ADD_r10 1223 -#define _SET_FUNCTION_ATTRIBUTE_r01 1224 -#define _SET_FUNCTION_ATTRIBUTE_r11 1225 -#define _SET_FUNCTION_ATTRIBUTE_r21 1226 -#define _SET_FUNCTION_ATTRIBUTE_r32 1227 -#define _SET_IP_r00 1228 -#define _SET_IP_r11 1229 -#define _SET_IP_r22 1230 -#define _SET_IP_r33 1231 -#define _SET_UPDATE_r10 1232 -#define _SPILL_OR_RELOAD_r01 1233 -#define _SPILL_OR_RELOAD_r02 1234 -#define _SPILL_OR_RELOAD_r03 1235 -#define _SPILL_OR_RELOAD_r10 1236 -#define _SPILL_OR_RELOAD_r12 1237 -#define _SPILL_OR_RELOAD_r13 1238 -#define _SPILL_OR_RELOAD_r20 1239 -#define _SPILL_OR_RELOAD_r21 1240 -#define _SPILL_OR_RELOAD_r23 1241 -#define _SPILL_OR_RELOAD_r30 1242 -#define _SPILL_OR_RELOAD_r31 1243 -#define _SPILL_OR_RELOAD_r32 1244 -#define _START_EXECUTOR_r00 1245 -#define _STORE_ATTR_r20 1246 -#define _STORE_ATTR_INSTANCE_VALUE_r20 1247 -#define _STORE_ATTR_SLOT_r20 1248 -#define _STORE_ATTR_WITH_HINT_r20 1249 -#define _STORE_DEREF_r10 1250 -#define _STORE_FAST_r10 1251 -#define _STORE_FAST_0_r10 1252 -#define _STORE_FAST_1_r10 1253 -#define _STORE_FAST_2_r10 1254 -#define _STORE_FAST_3_r10 1255 -#define _STORE_FAST_4_r10 1256 -#define _STORE_FAST_5_r10 1257 -#define _STORE_FAST_6_r10 1258 -#define _STORE_FAST_7_r10 1259 -#define _STORE_FAST_LOAD_FAST_r11 1260 -#define _STORE_FAST_STORE_FAST_r20 1261 -#define _STORE_GLOBAL_r10 1262 -#define _STORE_NAME_r10 1263 -#define _STORE_SLICE_r30 1264 -#define _STORE_SUBSCR_r30 1265 -#define _STORE_SUBSCR_DICT_r31 1266 -#define _STORE_SUBSCR_LIST_INT_r32 1267 -#define _SWAP_r11 1268 -#define _SWAP_2_r02 1269 -#define _SWAP_2_r12 1270 -#define _SWAP_2_r22 1271 -#define _SWAP_2_r33 1272 -#define _SWAP_3_r03 1273 -#define _SWAP_3_r13 1274 -#define _SWAP_3_r23 1275 -#define _SWAP_3_r33 1276 -#define _TIER2_RESUME_CHECK_r00 1277 -#define _TIER2_RESUME_CHECK_r11 1278 -#define _TIER2_RESUME_CHECK_r22 1279 -#define _TIER2_RESUME_CHECK_r33 1280 -#define _TO_BOOL_r11 1281 -#define _TO_BOOL_BOOL_r01 1282 -#define _TO_BOOL_BOOL_r11 1283 -#define _TO_BOOL_BOOL_r22 1284 -#define _TO_BOOL_BOOL_r33 1285 -#define _TO_BOOL_INT_r11 1286 -#define _TO_BOOL_LIST_r11 1287 -#define _TO_BOOL_NONE_r01 1288 -#define _TO_BOOL_NONE_r11 1289 -#define _TO_BOOL_NONE_r22 1290 -#define _TO_BOOL_NONE_r33 1291 -#define _TO_BOOL_STR_r11 1292 -#define _TRACE_RECORD_r00 1293 -#define _UNARY_INVERT_r11 1294 -#define _UNARY_NEGATIVE_r11 1295 -#define _UNARY_NOT_r01 1296 -#define _UNARY_NOT_r11 1297 -#define _UNARY_NOT_r22 1298 -#define _UNARY_NOT_r33 1299 -#define _UNPACK_EX_r10 1300 -#define _UNPACK_SEQUENCE_r10 1301 -#define _UNPACK_SEQUENCE_LIST_r10 1302 -#define _UNPACK_SEQUENCE_TUPLE_r10 1303 -#define _UNPACK_SEQUENCE_TWO_TUPLE_r12 1304 -#define _WITH_EXCEPT_START_r33 1305 -#define _YIELD_VALUE_r11 1306 -#define MAX_UOP_REGS_ID 1306 +#define MAX_UOP_ID 553 +#define _BINARY_OP_r21 554 +#define _BINARY_OP_ADD_FLOAT_r03 555 +#define _BINARY_OP_ADD_FLOAT_r13 556 +#define _BINARY_OP_ADD_FLOAT_r23 557 +#define _BINARY_OP_ADD_INT_r03 558 +#define _BINARY_OP_ADD_INT_r13 559 +#define _BINARY_OP_ADD_INT_r23 560 +#define _BINARY_OP_ADD_UNICODE_r01 561 +#define _BINARY_OP_ADD_UNICODE_r11 562 +#define _BINARY_OP_ADD_UNICODE_r21 563 +#define _BINARY_OP_ADD_UNICODE_r32 564 +#define _BINARY_OP_EXTEND_r21 565 +#define _BINARY_OP_INPLACE_ADD_UNICODE_r20 566 +#define _BINARY_OP_MULTIPLY_FLOAT_r03 567 +#define _BINARY_OP_MULTIPLY_FLOAT_r13 568 +#define _BINARY_OP_MULTIPLY_FLOAT_r23 569 +#define _BINARY_OP_MULTIPLY_INT_r03 570 +#define _BINARY_OP_MULTIPLY_INT_r13 571 +#define _BINARY_OP_MULTIPLY_INT_r23 572 +#define _BINARY_OP_SUBSCR_CHECK_FUNC_r23 573 +#define _BINARY_OP_SUBSCR_DICT_r21 574 +#define _BINARY_OP_SUBSCR_INIT_CALL_r01 575 +#define _BINARY_OP_SUBSCR_INIT_CALL_r11 576 +#define _BINARY_OP_SUBSCR_INIT_CALL_r21 577 +#define _BINARY_OP_SUBSCR_INIT_CALL_r31 578 +#define _BINARY_OP_SUBSCR_LIST_INT_r21 579 +#define _BINARY_OP_SUBSCR_LIST_SLICE_r21 580 +#define _BINARY_OP_SUBSCR_STR_INT_r21 581 +#define _BINARY_OP_SUBSCR_TUPLE_INT_r21 582 +#define _BINARY_OP_SUBTRACT_FLOAT_r03 583 +#define _BINARY_OP_SUBTRACT_FLOAT_r13 584 +#define _BINARY_OP_SUBTRACT_FLOAT_r23 585 +#define _BINARY_OP_SUBTRACT_INT_r03 586 +#define _BINARY_OP_SUBTRACT_INT_r13 587 +#define _BINARY_OP_SUBTRACT_INT_r23 588 +#define _BINARY_SLICE_r31 589 +#define _BUILD_INTERPOLATION_r01 590 +#define _BUILD_LIST_r01 591 +#define _BUILD_MAP_r01 592 +#define _BUILD_SET_r01 593 +#define _BUILD_SLICE_r01 594 +#define _BUILD_STRING_r01 595 +#define _BUILD_TEMPLATE_r21 596 +#define _BUILD_TUPLE_r01 597 +#define _CALL_BUILTIN_CLASS_r01 598 +#define _CALL_BUILTIN_FAST_r01 599 +#define _CALL_BUILTIN_FAST_WITH_KEYWORDS_r01 600 +#define _CALL_BUILTIN_O_r03 601 +#define _CALL_INTRINSIC_1_r11 602 +#define _CALL_INTRINSIC_2_r21 603 +#define _CALL_ISINSTANCE_r31 604 +#define _CALL_KW_NON_PY_r11 605 +#define _CALL_LEN_r33 606 +#define _CALL_LIST_APPEND_r02 607 +#define _CALL_LIST_APPEND_r12 608 +#define _CALL_LIST_APPEND_r22 609 +#define _CALL_LIST_APPEND_r32 610 +#define _CALL_METHOD_DESCRIPTOR_FAST_r01 611 +#define _CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS_r01 612 +#define _CALL_METHOD_DESCRIPTOR_NOARGS_r01 613 +#define _CALL_METHOD_DESCRIPTOR_O_r01 614 +#define _CALL_NON_PY_GENERAL_r01 615 +#define _CALL_STR_1_r32 616 +#define _CALL_TUPLE_1_r32 617 +#define _CALL_TYPE_1_r31 618 +#define _CHECK_AND_ALLOCATE_OBJECT_r00 619 +#define _CHECK_ATTR_CLASS_r01 620 +#define _CHECK_ATTR_CLASS_r11 621 +#define _CHECK_ATTR_CLASS_r22 622 +#define _CHECK_ATTR_CLASS_r33 623 +#define _CHECK_ATTR_METHOD_LAZY_DICT_r01 624 +#define _CHECK_ATTR_METHOD_LAZY_DICT_r11 625 +#define _CHECK_ATTR_METHOD_LAZY_DICT_r22 626 +#define _CHECK_ATTR_METHOD_LAZY_DICT_r33 627 +#define _CHECK_CALL_BOUND_METHOD_EXACT_ARGS_r00 628 +#define _CHECK_EG_MATCH_r22 629 +#define _CHECK_EXC_MATCH_r22 630 +#define _CHECK_FUNCTION_EXACT_ARGS_r00 631 +#define _CHECK_FUNCTION_VERSION_r00 632 +#define _CHECK_FUNCTION_VERSION_INLINE_r00 633 +#define _CHECK_FUNCTION_VERSION_INLINE_r11 634 +#define _CHECK_FUNCTION_VERSION_INLINE_r22 635 +#define _CHECK_FUNCTION_VERSION_INLINE_r33 636 +#define _CHECK_FUNCTION_VERSION_KW_r11 637 +#define _CHECK_IS_NOT_PY_CALLABLE_r00 638 +#define _CHECK_IS_NOT_PY_CALLABLE_KW_r11 639 +#define _CHECK_MANAGED_OBJECT_HAS_VALUES_r01 640 +#define _CHECK_MANAGED_OBJECT_HAS_VALUES_r11 641 +#define _CHECK_MANAGED_OBJECT_HAS_VALUES_r22 642 +#define _CHECK_MANAGED_OBJECT_HAS_VALUES_r33 643 +#define _CHECK_METHOD_VERSION_r00 644 +#define _CHECK_METHOD_VERSION_KW_r11 645 +#define _CHECK_PEP_523_r00 646 +#define _CHECK_PEP_523_r11 647 +#define _CHECK_PEP_523_r22 648 +#define _CHECK_PEP_523_r33 649 +#define _CHECK_PERIODIC_r00 650 +#define _CHECK_PERIODIC_AT_END_r00 651 +#define _CHECK_PERIODIC_IF_NOT_YIELD_FROM_r00 652 +#define _CHECK_RECURSION_REMAINING_r00 653 +#define _CHECK_RECURSION_REMAINING_r11 654 +#define _CHECK_RECURSION_REMAINING_r22 655 +#define _CHECK_RECURSION_REMAINING_r33 656 +#define _CHECK_STACK_SPACE_r00 657 +#define _CHECK_STACK_SPACE_OPERAND_r00 658 +#define _CHECK_STACK_SPACE_OPERAND_r11 659 +#define _CHECK_STACK_SPACE_OPERAND_r22 660 +#define _CHECK_STACK_SPACE_OPERAND_r33 661 +#define _CHECK_VALIDITY_r00 662 +#define _CHECK_VALIDITY_r11 663 +#define _CHECK_VALIDITY_r22 664 +#define _CHECK_VALIDITY_r33 665 +#define _COLD_DYNAMIC_EXIT_r00 666 +#define _COLD_EXIT_r00 667 +#define _COMPARE_OP_r21 668 +#define _COMPARE_OP_FLOAT_r01 669 +#define _COMPARE_OP_FLOAT_r11 670 +#define _COMPARE_OP_FLOAT_r21 671 +#define _COMPARE_OP_FLOAT_r32 672 +#define _COMPARE_OP_INT_r23 673 +#define _COMPARE_OP_STR_r21 674 +#define _CONTAINS_OP_r21 675 +#define _CONTAINS_OP_DICT_r21 676 +#define _CONTAINS_OP_SET_r21 677 +#define _CONVERT_VALUE_r11 678 +#define _COPY_r01 679 +#define _COPY_1_r02 680 +#define _COPY_1_r12 681 +#define _COPY_1_r23 682 +#define _COPY_2_r03 683 +#define _COPY_2_r13 684 +#define _COPY_2_r23 685 +#define _COPY_3_r03 686 +#define _COPY_3_r13 687 +#define _COPY_3_r23 688 +#define _COPY_3_r33 689 +#define _COPY_FREE_VARS_r00 690 +#define _COPY_FREE_VARS_r11 691 +#define _COPY_FREE_VARS_r22 692 +#define _COPY_FREE_VARS_r33 693 +#define _CREATE_INIT_FRAME_r01 694 +#define _DELETE_ATTR_r10 695 +#define _DELETE_DEREF_r00 696 +#define _DELETE_FAST_r00 697 +#define _DELETE_GLOBAL_r00 698 +#define _DELETE_NAME_r00 699 +#define _DELETE_SUBSCR_r20 700 +#define _DEOPT_r00 701 +#define _DEOPT_r10 702 +#define _DEOPT_r20 703 +#define _DEOPT_r30 704 +#define _DICT_MERGE_r10 705 +#define _DICT_UPDATE_r10 706 +#define _DO_CALL_r01 707 +#define _DO_CALL_FUNCTION_EX_r31 708 +#define _DO_CALL_KW_r11 709 +#define _DYNAMIC_EXIT_r00 710 +#define _DYNAMIC_EXIT_r10 711 +#define _DYNAMIC_EXIT_r20 712 +#define _DYNAMIC_EXIT_r30 713 +#define _END_FOR_r10 714 +#define _END_SEND_r21 715 +#define _ERROR_POP_N_r00 716 +#define _EXIT_INIT_CHECK_r10 717 +#define _EXIT_TRACE_r00 718 +#define _EXIT_TRACE_r10 719 +#define _EXIT_TRACE_r20 720 +#define _EXIT_TRACE_r30 721 +#define _EXPAND_METHOD_r00 722 +#define _EXPAND_METHOD_KW_r11 723 +#define _FATAL_ERROR_r00 724 +#define _FATAL_ERROR_r11 725 +#define _FATAL_ERROR_r22 726 +#define _FATAL_ERROR_r33 727 +#define _FORMAT_SIMPLE_r11 728 +#define _FORMAT_WITH_SPEC_r21 729 +#define _FOR_ITER_r23 730 +#define _FOR_ITER_GEN_FRAME_r23 731 +#define _FOR_ITER_TIER_TWO_r23 732 +#define _GET_AITER_r11 733 +#define _GET_ANEXT_r12 734 +#define _GET_AWAITABLE_r11 735 +#define _GET_ITER_r12 736 +#define _GET_LEN_r12 737 +#define _GET_YIELD_FROM_ITER_r11 738 +#define _GUARD_BINARY_OP_EXTEND_r22 739 +#define _GUARD_CALLABLE_ISINSTANCE_r03 740 +#define _GUARD_CALLABLE_ISINSTANCE_r13 741 +#define _GUARD_CALLABLE_ISINSTANCE_r23 742 +#define _GUARD_CALLABLE_ISINSTANCE_r33 743 +#define _GUARD_CALLABLE_LEN_r03 744 +#define _GUARD_CALLABLE_LEN_r13 745 +#define _GUARD_CALLABLE_LEN_r23 746 +#define _GUARD_CALLABLE_LEN_r33 747 +#define _GUARD_CALLABLE_LIST_APPEND_r03 748 +#define _GUARD_CALLABLE_LIST_APPEND_r13 749 +#define _GUARD_CALLABLE_LIST_APPEND_r23 750 +#define _GUARD_CALLABLE_LIST_APPEND_r33 751 +#define _GUARD_CALLABLE_STR_1_r03 752 +#define _GUARD_CALLABLE_STR_1_r13 753 +#define _GUARD_CALLABLE_STR_1_r23 754 +#define _GUARD_CALLABLE_STR_1_r33 755 +#define _GUARD_CALLABLE_TUPLE_1_r03 756 +#define _GUARD_CALLABLE_TUPLE_1_r13 757 +#define _GUARD_CALLABLE_TUPLE_1_r23 758 +#define _GUARD_CALLABLE_TUPLE_1_r33 759 +#define _GUARD_CALLABLE_TYPE_1_r03 760 +#define _GUARD_CALLABLE_TYPE_1_r13 761 +#define _GUARD_CALLABLE_TYPE_1_r23 762 +#define _GUARD_CALLABLE_TYPE_1_r33 763 +#define _GUARD_DORV_NO_DICT_r01 764 +#define _GUARD_DORV_NO_DICT_r11 765 +#define _GUARD_DORV_NO_DICT_r22 766 +#define _GUARD_DORV_NO_DICT_r33 767 +#define _GUARD_DORV_VALUES_INST_ATTR_FROM_DICT_r01 768 +#define _GUARD_DORV_VALUES_INST_ATTR_FROM_DICT_r11 769 +#define _GUARD_DORV_VALUES_INST_ATTR_FROM_DICT_r22 770 +#define _GUARD_DORV_VALUES_INST_ATTR_FROM_DICT_r33 771 +#define _GUARD_GLOBALS_VERSION_r00 772 +#define _GUARD_GLOBALS_VERSION_r11 773 +#define _GUARD_GLOBALS_VERSION_r22 774 +#define _GUARD_GLOBALS_VERSION_r33 775 +#define _GUARD_IP_RETURN_GENERATOR_r00 776 +#define _GUARD_IP_RETURN_GENERATOR_r11 777 +#define _GUARD_IP_RETURN_GENERATOR_r22 778 +#define _GUARD_IP_RETURN_GENERATOR_r33 779 +#define _GUARD_IP_RETURN_VALUE_r00 780 +#define _GUARD_IP_RETURN_VALUE_r11 781 +#define _GUARD_IP_RETURN_VALUE_r22 782 +#define _GUARD_IP_RETURN_VALUE_r33 783 +#define _GUARD_IP_YIELD_VALUE_r00 784 +#define _GUARD_IP_YIELD_VALUE_r11 785 +#define _GUARD_IP_YIELD_VALUE_r22 786 +#define _GUARD_IP_YIELD_VALUE_r33 787 +#define _GUARD_IP__PUSH_FRAME_r00 788 +#define _GUARD_IP__PUSH_FRAME_r11 789 +#define _GUARD_IP__PUSH_FRAME_r22 790 +#define _GUARD_IP__PUSH_FRAME_r33 791 +#define _GUARD_IS_FALSE_POP_r00 792 +#define _GUARD_IS_FALSE_POP_r10 793 +#define _GUARD_IS_FALSE_POP_r21 794 +#define _GUARD_IS_FALSE_POP_r32 795 +#define _GUARD_IS_NONE_POP_r00 796 +#define _GUARD_IS_NONE_POP_r10 797 +#define _GUARD_IS_NONE_POP_r21 798 +#define _GUARD_IS_NONE_POP_r32 799 +#define _GUARD_IS_NOT_NONE_POP_r10 800 +#define _GUARD_IS_TRUE_POP_r00 801 +#define _GUARD_IS_TRUE_POP_r10 802 +#define _GUARD_IS_TRUE_POP_r21 803 +#define _GUARD_IS_TRUE_POP_r32 804 +#define _GUARD_KEYS_VERSION_r01 805 +#define _GUARD_KEYS_VERSION_r11 806 +#define _GUARD_KEYS_VERSION_r22 807 +#define _GUARD_KEYS_VERSION_r33 808 +#define _GUARD_NOS_DICT_r02 809 +#define _GUARD_NOS_DICT_r12 810 +#define _GUARD_NOS_DICT_r22 811 +#define _GUARD_NOS_DICT_r33 812 +#define _GUARD_NOS_FLOAT_r02 813 +#define _GUARD_NOS_FLOAT_r12 814 +#define _GUARD_NOS_FLOAT_r22 815 +#define _GUARD_NOS_FLOAT_r33 816 +#define _GUARD_NOS_INT_r02 817 +#define _GUARD_NOS_INT_r12 818 +#define _GUARD_NOS_INT_r22 819 +#define _GUARD_NOS_INT_r33 820 +#define _GUARD_NOS_LIST_r02 821 +#define _GUARD_NOS_LIST_r12 822 +#define _GUARD_NOS_LIST_r22 823 +#define _GUARD_NOS_LIST_r33 824 +#define _GUARD_NOS_NOT_NULL_r02 825 +#define _GUARD_NOS_NOT_NULL_r12 826 +#define _GUARD_NOS_NOT_NULL_r22 827 +#define _GUARD_NOS_NOT_NULL_r33 828 +#define _GUARD_NOS_NULL_r02 829 +#define _GUARD_NOS_NULL_r12 830 +#define _GUARD_NOS_NULL_r22 831 +#define _GUARD_NOS_NULL_r33 832 +#define _GUARD_NOS_OVERFLOWED_r02 833 +#define _GUARD_NOS_OVERFLOWED_r12 834 +#define _GUARD_NOS_OVERFLOWED_r22 835 +#define _GUARD_NOS_OVERFLOWED_r33 836 +#define _GUARD_NOS_TUPLE_r02 837 +#define _GUARD_NOS_TUPLE_r12 838 +#define _GUARD_NOS_TUPLE_r22 839 +#define _GUARD_NOS_TUPLE_r33 840 +#define _GUARD_NOS_UNICODE_r02 841 +#define _GUARD_NOS_UNICODE_r12 842 +#define _GUARD_NOS_UNICODE_r22 843 +#define _GUARD_NOS_UNICODE_r33 844 +#define _GUARD_NOT_EXHAUSTED_LIST_r02 845 +#define _GUARD_NOT_EXHAUSTED_LIST_r12 846 +#define _GUARD_NOT_EXHAUSTED_LIST_r22 847 +#define _GUARD_NOT_EXHAUSTED_LIST_r33 848 +#define _GUARD_NOT_EXHAUSTED_RANGE_r02 849 +#define _GUARD_NOT_EXHAUSTED_RANGE_r12 850 +#define _GUARD_NOT_EXHAUSTED_RANGE_r22 851 +#define _GUARD_NOT_EXHAUSTED_RANGE_r33 852 +#define _GUARD_NOT_EXHAUSTED_TUPLE_r02 853 +#define _GUARD_NOT_EXHAUSTED_TUPLE_r12 854 +#define _GUARD_NOT_EXHAUSTED_TUPLE_r22 855 +#define _GUARD_NOT_EXHAUSTED_TUPLE_r33 856 +#define _GUARD_THIRD_NULL_r03 857 +#define _GUARD_THIRD_NULL_r13 858 +#define _GUARD_THIRD_NULL_r23 859 +#define _GUARD_THIRD_NULL_r33 860 +#define _GUARD_TOS_ANY_SET_r01 861 +#define _GUARD_TOS_ANY_SET_r11 862 +#define _GUARD_TOS_ANY_SET_r22 863 +#define _GUARD_TOS_ANY_SET_r33 864 +#define _GUARD_TOS_DICT_r01 865 +#define _GUARD_TOS_DICT_r11 866 +#define _GUARD_TOS_DICT_r22 867 +#define _GUARD_TOS_DICT_r33 868 +#define _GUARD_TOS_FLOAT_r01 869 +#define _GUARD_TOS_FLOAT_r11 870 +#define _GUARD_TOS_FLOAT_r22 871 +#define _GUARD_TOS_FLOAT_r33 872 +#define _GUARD_TOS_INT_r01 873 +#define _GUARD_TOS_INT_r11 874 +#define _GUARD_TOS_INT_r22 875 +#define _GUARD_TOS_INT_r33 876 +#define _GUARD_TOS_LIST_r01 877 +#define _GUARD_TOS_LIST_r11 878 +#define _GUARD_TOS_LIST_r22 879 +#define _GUARD_TOS_LIST_r33 880 +#define _GUARD_TOS_OVERFLOWED_r01 881 +#define _GUARD_TOS_OVERFLOWED_r11 882 +#define _GUARD_TOS_OVERFLOWED_r22 883 +#define _GUARD_TOS_OVERFLOWED_r33 884 +#define _GUARD_TOS_SLICE_r01 885 +#define _GUARD_TOS_SLICE_r11 886 +#define _GUARD_TOS_SLICE_r22 887 +#define _GUARD_TOS_SLICE_r33 888 +#define _GUARD_TOS_TUPLE_r01 889 +#define _GUARD_TOS_TUPLE_r11 890 +#define _GUARD_TOS_TUPLE_r22 891 +#define _GUARD_TOS_TUPLE_r33 892 +#define _GUARD_TOS_UNICODE_r01 893 +#define _GUARD_TOS_UNICODE_r11 894 +#define _GUARD_TOS_UNICODE_r22 895 +#define _GUARD_TOS_UNICODE_r33 896 +#define _GUARD_TYPE_VERSION_r01 897 +#define _GUARD_TYPE_VERSION_r11 898 +#define _GUARD_TYPE_VERSION_r22 899 +#define _GUARD_TYPE_VERSION_r33 900 +#define _GUARD_TYPE_VERSION_AND_LOCK_r01 901 +#define _GUARD_TYPE_VERSION_AND_LOCK_r11 902 +#define _GUARD_TYPE_VERSION_AND_LOCK_r22 903 +#define _GUARD_TYPE_VERSION_AND_LOCK_r33 904 +#define _HANDLE_PENDING_AND_DEOPT_r00 905 +#define _HANDLE_PENDING_AND_DEOPT_r10 906 +#define _HANDLE_PENDING_AND_DEOPT_r20 907 +#define _HANDLE_PENDING_AND_DEOPT_r30 908 +#define _IMPORT_FROM_r12 909 +#define _IMPORT_NAME_r21 910 +#define _INIT_CALL_BOUND_METHOD_EXACT_ARGS_r00 911 +#define _INIT_CALL_PY_EXACT_ARGS_r01 912 +#define _INIT_CALL_PY_EXACT_ARGS_0_r01 913 +#define _INIT_CALL_PY_EXACT_ARGS_1_r01 914 +#define _INIT_CALL_PY_EXACT_ARGS_2_r01 915 +#define _INIT_CALL_PY_EXACT_ARGS_3_r01 916 +#define _INIT_CALL_PY_EXACT_ARGS_4_r01 917 +#define _INSERT_NULL_r10 918 +#define _INSTRUMENTED_FOR_ITER_r23 919 +#define _INSTRUMENTED_INSTRUCTION_r00 920 +#define _INSTRUMENTED_JUMP_FORWARD_r00 921 +#define _INSTRUMENTED_JUMP_FORWARD_r11 922 +#define _INSTRUMENTED_JUMP_FORWARD_r22 923 +#define _INSTRUMENTED_JUMP_FORWARD_r33 924 +#define _INSTRUMENTED_LINE_r00 925 +#define _INSTRUMENTED_NOT_TAKEN_r00 926 +#define _INSTRUMENTED_NOT_TAKEN_r11 927 +#define _INSTRUMENTED_NOT_TAKEN_r22 928 +#define _INSTRUMENTED_NOT_TAKEN_r33 929 +#define _INSTRUMENTED_POP_JUMP_IF_FALSE_r00 930 +#define _INSTRUMENTED_POP_JUMP_IF_FALSE_r10 931 +#define _INSTRUMENTED_POP_JUMP_IF_FALSE_r21 932 +#define _INSTRUMENTED_POP_JUMP_IF_FALSE_r32 933 +#define _INSTRUMENTED_POP_JUMP_IF_NONE_r10 934 +#define _INSTRUMENTED_POP_JUMP_IF_NOT_NONE_r10 935 +#define _INSTRUMENTED_POP_JUMP_IF_TRUE_r00 936 +#define _INSTRUMENTED_POP_JUMP_IF_TRUE_r10 937 +#define _INSTRUMENTED_POP_JUMP_IF_TRUE_r21 938 +#define _INSTRUMENTED_POP_JUMP_IF_TRUE_r32 939 +#define _IS_NONE_r11 940 +#define _IS_OP_r21 941 +#define _ITER_CHECK_LIST_r02 942 +#define _ITER_CHECK_LIST_r12 943 +#define _ITER_CHECK_LIST_r22 944 +#define _ITER_CHECK_LIST_r33 945 +#define _ITER_CHECK_RANGE_r02 946 +#define _ITER_CHECK_RANGE_r12 947 +#define _ITER_CHECK_RANGE_r22 948 +#define _ITER_CHECK_RANGE_r33 949 +#define _ITER_CHECK_TUPLE_r02 950 +#define _ITER_CHECK_TUPLE_r12 951 +#define _ITER_CHECK_TUPLE_r22 952 +#define _ITER_CHECK_TUPLE_r33 953 +#define _ITER_JUMP_LIST_r02 954 +#define _ITER_JUMP_LIST_r12 955 +#define _ITER_JUMP_LIST_r22 956 +#define _ITER_JUMP_LIST_r33 957 +#define _ITER_JUMP_RANGE_r02 958 +#define _ITER_JUMP_RANGE_r12 959 +#define _ITER_JUMP_RANGE_r22 960 +#define _ITER_JUMP_RANGE_r33 961 +#define _ITER_JUMP_TUPLE_r02 962 +#define _ITER_JUMP_TUPLE_r12 963 +#define _ITER_JUMP_TUPLE_r22 964 +#define _ITER_JUMP_TUPLE_r33 965 +#define _ITER_NEXT_LIST_r23 966 +#define _ITER_NEXT_LIST_TIER_TWO_r23 967 +#define _ITER_NEXT_RANGE_r03 968 +#define _ITER_NEXT_RANGE_r13 969 +#define _ITER_NEXT_RANGE_r23 970 +#define _ITER_NEXT_TUPLE_r03 971 +#define _ITER_NEXT_TUPLE_r13 972 +#define _ITER_NEXT_TUPLE_r23 973 +#define _JUMP_BACKWARD_NO_INTERRUPT_r00 974 +#define _JUMP_BACKWARD_NO_INTERRUPT_r11 975 +#define _JUMP_BACKWARD_NO_INTERRUPT_r22 976 +#define _JUMP_BACKWARD_NO_INTERRUPT_r33 977 +#define _JUMP_TO_TOP_r00 978 +#define _LIST_APPEND_r10 979 +#define _LIST_EXTEND_r10 980 +#define _LOAD_ATTR_r10 981 +#define _LOAD_ATTR_CLASS_r11 982 +#define _LOAD_ATTR_GETATTRIBUTE_OVERRIDDEN_r11 983 +#define _LOAD_ATTR_INSTANCE_VALUE_r11 984 +#define _LOAD_ATTR_METHOD_LAZY_DICT_r02 985 +#define _LOAD_ATTR_METHOD_LAZY_DICT_r12 986 +#define _LOAD_ATTR_METHOD_LAZY_DICT_r23 987 +#define _LOAD_ATTR_METHOD_NO_DICT_r02 988 +#define _LOAD_ATTR_METHOD_NO_DICT_r12 989 +#define _LOAD_ATTR_METHOD_NO_DICT_r23 990 +#define _LOAD_ATTR_METHOD_WITH_VALUES_r02 991 +#define _LOAD_ATTR_METHOD_WITH_VALUES_r12 992 +#define _LOAD_ATTR_METHOD_WITH_VALUES_r23 993 +#define _LOAD_ATTR_MODULE_r11 994 +#define _LOAD_ATTR_NONDESCRIPTOR_NO_DICT_r11 995 +#define _LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES_r11 996 +#define _LOAD_ATTR_PROPERTY_FRAME_r11 997 +#define _LOAD_ATTR_SLOT_r11 998 +#define _LOAD_ATTR_WITH_HINT_r11 999 +#define _LOAD_BUILD_CLASS_r01 1000 +#define _LOAD_BYTECODE_r00 1001 +#define _LOAD_COMMON_CONSTANT_r01 1002 +#define _LOAD_COMMON_CONSTANT_r12 1003 +#define _LOAD_COMMON_CONSTANT_r23 1004 +#define _LOAD_CONST_r01 1005 +#define _LOAD_CONST_r12 1006 +#define _LOAD_CONST_r23 1007 +#define _LOAD_CONST_INLINE_r01 1008 +#define _LOAD_CONST_INLINE_r12 1009 +#define _LOAD_CONST_INLINE_r23 1010 +#define _LOAD_CONST_INLINE_BORROW_r01 1011 +#define _LOAD_CONST_INLINE_BORROW_r12 1012 +#define _LOAD_CONST_INLINE_BORROW_r23 1013 +#define _LOAD_CONST_UNDER_INLINE_r02 1014 +#define _LOAD_CONST_UNDER_INLINE_r12 1015 +#define _LOAD_CONST_UNDER_INLINE_r23 1016 +#define _LOAD_CONST_UNDER_INLINE_BORROW_r02 1017 +#define _LOAD_CONST_UNDER_INLINE_BORROW_r12 1018 +#define _LOAD_CONST_UNDER_INLINE_BORROW_r23 1019 +#define _LOAD_DEREF_r01 1020 +#define _LOAD_FAST_r01 1021 +#define _LOAD_FAST_r12 1022 +#define _LOAD_FAST_r23 1023 +#define _LOAD_FAST_0_r01 1024 +#define _LOAD_FAST_0_r12 1025 +#define _LOAD_FAST_0_r23 1026 +#define _LOAD_FAST_1_r01 1027 +#define _LOAD_FAST_1_r12 1028 +#define _LOAD_FAST_1_r23 1029 +#define _LOAD_FAST_2_r01 1030 +#define _LOAD_FAST_2_r12 1031 +#define _LOAD_FAST_2_r23 1032 +#define _LOAD_FAST_3_r01 1033 +#define _LOAD_FAST_3_r12 1034 +#define _LOAD_FAST_3_r23 1035 +#define _LOAD_FAST_4_r01 1036 +#define _LOAD_FAST_4_r12 1037 +#define _LOAD_FAST_4_r23 1038 +#define _LOAD_FAST_5_r01 1039 +#define _LOAD_FAST_5_r12 1040 +#define _LOAD_FAST_5_r23 1041 +#define _LOAD_FAST_6_r01 1042 +#define _LOAD_FAST_6_r12 1043 +#define _LOAD_FAST_6_r23 1044 +#define _LOAD_FAST_7_r01 1045 +#define _LOAD_FAST_7_r12 1046 +#define _LOAD_FAST_7_r23 1047 +#define _LOAD_FAST_AND_CLEAR_r01 1048 +#define _LOAD_FAST_AND_CLEAR_r12 1049 +#define _LOAD_FAST_AND_CLEAR_r23 1050 +#define _LOAD_FAST_BORROW_r01 1051 +#define _LOAD_FAST_BORROW_r12 1052 +#define _LOAD_FAST_BORROW_r23 1053 +#define _LOAD_FAST_BORROW_0_r01 1054 +#define _LOAD_FAST_BORROW_0_r12 1055 +#define _LOAD_FAST_BORROW_0_r23 1056 +#define _LOAD_FAST_BORROW_1_r01 1057 +#define _LOAD_FAST_BORROW_1_r12 1058 +#define _LOAD_FAST_BORROW_1_r23 1059 +#define _LOAD_FAST_BORROW_2_r01 1060 +#define _LOAD_FAST_BORROW_2_r12 1061 +#define _LOAD_FAST_BORROW_2_r23 1062 +#define _LOAD_FAST_BORROW_3_r01 1063 +#define _LOAD_FAST_BORROW_3_r12 1064 +#define _LOAD_FAST_BORROW_3_r23 1065 +#define _LOAD_FAST_BORROW_4_r01 1066 +#define _LOAD_FAST_BORROW_4_r12 1067 +#define _LOAD_FAST_BORROW_4_r23 1068 +#define _LOAD_FAST_BORROW_5_r01 1069 +#define _LOAD_FAST_BORROW_5_r12 1070 +#define _LOAD_FAST_BORROW_5_r23 1071 +#define _LOAD_FAST_BORROW_6_r01 1072 +#define _LOAD_FAST_BORROW_6_r12 1073 +#define _LOAD_FAST_BORROW_6_r23 1074 +#define _LOAD_FAST_BORROW_7_r01 1075 +#define _LOAD_FAST_BORROW_7_r12 1076 +#define _LOAD_FAST_BORROW_7_r23 1077 +#define _LOAD_FAST_BORROW_LOAD_FAST_BORROW_r02 1078 +#define _LOAD_FAST_BORROW_LOAD_FAST_BORROW_r13 1079 +#define _LOAD_FAST_CHECK_r01 1080 +#define _LOAD_FAST_CHECK_r12 1081 +#define _LOAD_FAST_CHECK_r23 1082 +#define _LOAD_FAST_LOAD_FAST_r02 1083 +#define _LOAD_FAST_LOAD_FAST_r13 1084 +#define _LOAD_FROM_DICT_OR_DEREF_r11 1085 +#define _LOAD_FROM_DICT_OR_GLOBALS_r11 1086 +#define _LOAD_GLOBAL_r00 1087 +#define _LOAD_GLOBAL_BUILTINS_r01 1088 +#define _LOAD_GLOBAL_MODULE_r01 1089 +#define _LOAD_LOCALS_r01 1090 +#define _LOAD_LOCALS_r12 1091 +#define _LOAD_LOCALS_r23 1092 +#define _LOAD_NAME_r01 1093 +#define _LOAD_SMALL_INT_r01 1094 +#define _LOAD_SMALL_INT_r12 1095 +#define _LOAD_SMALL_INT_r23 1096 +#define _LOAD_SMALL_INT_0_r01 1097 +#define _LOAD_SMALL_INT_0_r12 1098 +#define _LOAD_SMALL_INT_0_r23 1099 +#define _LOAD_SMALL_INT_1_r01 1100 +#define _LOAD_SMALL_INT_1_r12 1101 +#define _LOAD_SMALL_INT_1_r23 1102 +#define _LOAD_SMALL_INT_2_r01 1103 +#define _LOAD_SMALL_INT_2_r12 1104 +#define _LOAD_SMALL_INT_2_r23 1105 +#define _LOAD_SMALL_INT_3_r01 1106 +#define _LOAD_SMALL_INT_3_r12 1107 +#define _LOAD_SMALL_INT_3_r23 1108 +#define _LOAD_SPECIAL_r00 1109 +#define _LOAD_SUPER_ATTR_ATTR_r31 1110 +#define _LOAD_SUPER_ATTR_METHOD_r32 1111 +#define _MAKE_CALLARGS_A_TUPLE_r33 1112 +#define _MAKE_CELL_r00 1113 +#define _MAKE_FUNCTION_r11 1114 +#define _MAKE_WARM_r00 1115 +#define _MAKE_WARM_r11 1116 +#define _MAKE_WARM_r22 1117 +#define _MAKE_WARM_r33 1118 +#define _MAP_ADD_r20 1119 +#define _MATCH_CLASS_r31 1120 +#define _MATCH_KEYS_r23 1121 +#define _MATCH_MAPPING_r02 1122 +#define _MATCH_MAPPING_r12 1123 +#define _MATCH_MAPPING_r23 1124 +#define _MATCH_SEQUENCE_r02 1125 +#define _MATCH_SEQUENCE_r12 1126 +#define _MATCH_SEQUENCE_r23 1127 +#define _MAYBE_EXPAND_METHOD_r00 1128 +#define _MAYBE_EXPAND_METHOD_KW_r11 1129 +#define _MONITOR_CALL_r00 1130 +#define _MONITOR_CALL_KW_r11 1131 +#define _MONITOR_JUMP_BACKWARD_r00 1132 +#define _MONITOR_JUMP_BACKWARD_r11 1133 +#define _MONITOR_JUMP_BACKWARD_r22 1134 +#define _MONITOR_JUMP_BACKWARD_r33 1135 +#define _MONITOR_RESUME_r00 1136 +#define _NOP_r00 1137 +#define _NOP_r11 1138 +#define _NOP_r22 1139 +#define _NOP_r33 1140 +#define _POP_CALL_r20 1141 +#define _POP_CALL_LOAD_CONST_INLINE_BORROW_r21 1142 +#define _POP_CALL_ONE_r30 1143 +#define _POP_CALL_ONE_LOAD_CONST_INLINE_BORROW_r31 1144 +#define _POP_CALL_TWO_r30 1145 +#define _POP_CALL_TWO_LOAD_CONST_INLINE_BORROW_r31 1146 +#define _POP_EXCEPT_r10 1147 +#define _POP_ITER_r20 1148 +#define _POP_JUMP_IF_FALSE_r00 1149 +#define _POP_JUMP_IF_FALSE_r10 1150 +#define _POP_JUMP_IF_FALSE_r21 1151 +#define _POP_JUMP_IF_FALSE_r32 1152 +#define _POP_JUMP_IF_TRUE_r00 1153 +#define _POP_JUMP_IF_TRUE_r10 1154 +#define _POP_JUMP_IF_TRUE_r21 1155 +#define _POP_JUMP_IF_TRUE_r32 1156 +#define _POP_TOP_r10 1157 +#define _POP_TOP_FLOAT_r00 1158 +#define _POP_TOP_FLOAT_r10 1159 +#define _POP_TOP_FLOAT_r21 1160 +#define _POP_TOP_FLOAT_r32 1161 +#define _POP_TOP_INT_r00 1162 +#define _POP_TOP_INT_r10 1163 +#define _POP_TOP_INT_r21 1164 +#define _POP_TOP_INT_r32 1165 +#define _POP_TOP_LOAD_CONST_INLINE_r11 1166 +#define _POP_TOP_LOAD_CONST_INLINE_BORROW_r11 1167 +#define _POP_TOP_NOP_r00 1168 +#define _POP_TOP_NOP_r10 1169 +#define _POP_TOP_NOP_r21 1170 +#define _POP_TOP_NOP_r32 1171 +#define _POP_TOP_UNICODE_r00 1172 +#define _POP_TOP_UNICODE_r10 1173 +#define _POP_TOP_UNICODE_r21 1174 +#define _POP_TOP_UNICODE_r32 1175 +#define _POP_TWO_r20 1176 +#define _POP_TWO_LOAD_CONST_INLINE_BORROW_r21 1177 +#define _PUSH_EXC_INFO_r02 1178 +#define _PUSH_EXC_INFO_r12 1179 +#define _PUSH_EXC_INFO_r23 1180 +#define _PUSH_FRAME_r10 1181 +#define _PUSH_NULL_r01 1182 +#define _PUSH_NULL_r12 1183 +#define _PUSH_NULL_r23 1184 +#define _PUSH_NULL_CONDITIONAL_r00 1185 +#define _PY_FRAME_GENERAL_r01 1186 +#define _PY_FRAME_KW_r11 1187 +#define _QUICKEN_RESUME_r00 1188 +#define _QUICKEN_RESUME_r11 1189 +#define _QUICKEN_RESUME_r22 1190 +#define _QUICKEN_RESUME_r33 1191 +#define _REPLACE_WITH_TRUE_r11 1192 +#define _RESUME_CHECK_r00 1193 +#define _RESUME_CHECK_r11 1194 +#define _RESUME_CHECK_r22 1195 +#define _RESUME_CHECK_r33 1196 +#define _RETURN_GENERATOR_r01 1197 +#define _RETURN_VALUE_r11 1198 +#define _SAVE_RETURN_OFFSET_r00 1199 +#define _SAVE_RETURN_OFFSET_r11 1200 +#define _SAVE_RETURN_OFFSET_r22 1201 +#define _SAVE_RETURN_OFFSET_r33 1202 +#define _SEND_r22 1203 +#define _SEND_GEN_FRAME_r22 1204 +#define _SETUP_ANNOTATIONS_r00 1205 +#define _SET_ADD_r10 1206 +#define _SET_FUNCTION_ATTRIBUTE_r01 1207 +#define _SET_FUNCTION_ATTRIBUTE_r11 1208 +#define _SET_FUNCTION_ATTRIBUTE_r21 1209 +#define _SET_FUNCTION_ATTRIBUTE_r32 1210 +#define _SET_IP_r00 1211 +#define _SET_IP_r11 1212 +#define _SET_IP_r22 1213 +#define _SET_IP_r33 1214 +#define _SET_UPDATE_r10 1215 +#define _SPILL_OR_RELOAD_r01 1216 +#define _SPILL_OR_RELOAD_r02 1217 +#define _SPILL_OR_RELOAD_r03 1218 +#define _SPILL_OR_RELOAD_r10 1219 +#define _SPILL_OR_RELOAD_r12 1220 +#define _SPILL_OR_RELOAD_r13 1221 +#define _SPILL_OR_RELOAD_r20 1222 +#define _SPILL_OR_RELOAD_r21 1223 +#define _SPILL_OR_RELOAD_r23 1224 +#define _SPILL_OR_RELOAD_r30 1225 +#define _SPILL_OR_RELOAD_r31 1226 +#define _SPILL_OR_RELOAD_r32 1227 +#define _START_EXECUTOR_r00 1228 +#define _STORE_ATTR_r20 1229 +#define _STORE_ATTR_INSTANCE_VALUE_r21 1230 +#define _STORE_ATTR_SLOT_r21 1231 +#define _STORE_ATTR_WITH_HINT_r20 1232 +#define _STORE_DEREF_r10 1233 +#define _STORE_FAST_r10 1234 +#define _STORE_FAST_0_r10 1235 +#define _STORE_FAST_1_r10 1236 +#define _STORE_FAST_2_r10 1237 +#define _STORE_FAST_3_r10 1238 +#define _STORE_FAST_4_r10 1239 +#define _STORE_FAST_5_r10 1240 +#define _STORE_FAST_6_r10 1241 +#define _STORE_FAST_7_r10 1242 +#define _STORE_FAST_LOAD_FAST_r11 1243 +#define _STORE_FAST_STORE_FAST_r20 1244 +#define _STORE_GLOBAL_r10 1245 +#define _STORE_NAME_r10 1246 +#define _STORE_SLICE_r30 1247 +#define _STORE_SUBSCR_r30 1248 +#define _STORE_SUBSCR_DICT_r31 1249 +#define _STORE_SUBSCR_LIST_INT_r32 1250 +#define _SWAP_r11 1251 +#define _SWAP_2_r02 1252 +#define _SWAP_2_r12 1253 +#define _SWAP_2_r22 1254 +#define _SWAP_2_r33 1255 +#define _SWAP_3_r03 1256 +#define _SWAP_3_r13 1257 +#define _SWAP_3_r23 1258 +#define _SWAP_3_r33 1259 +#define _TIER2_RESUME_CHECK_r00 1260 +#define _TIER2_RESUME_CHECK_r11 1261 +#define _TIER2_RESUME_CHECK_r22 1262 +#define _TIER2_RESUME_CHECK_r33 1263 +#define _TO_BOOL_r11 1264 +#define _TO_BOOL_BOOL_r01 1265 +#define _TO_BOOL_BOOL_r11 1266 +#define _TO_BOOL_BOOL_r22 1267 +#define _TO_BOOL_BOOL_r33 1268 +#define _TO_BOOL_INT_r11 1269 +#define _TO_BOOL_LIST_r11 1270 +#define _TO_BOOL_NONE_r01 1271 +#define _TO_BOOL_NONE_r11 1272 +#define _TO_BOOL_NONE_r22 1273 +#define _TO_BOOL_NONE_r33 1274 +#define _TO_BOOL_STR_r11 1275 +#define _TRACE_RECORD_r00 1276 +#define _UNARY_INVERT_r11 1277 +#define _UNARY_NEGATIVE_r11 1278 +#define _UNARY_NOT_r01 1279 +#define _UNARY_NOT_r11 1280 +#define _UNARY_NOT_r22 1281 +#define _UNARY_NOT_r33 1282 +#define _UNPACK_EX_r10 1283 +#define _UNPACK_SEQUENCE_r10 1284 +#define _UNPACK_SEQUENCE_LIST_r10 1285 +#define _UNPACK_SEQUENCE_TUPLE_r10 1286 +#define _UNPACK_SEQUENCE_TWO_TUPLE_r12 1287 +#define _WITH_EXCEPT_START_r33 1288 +#define _YIELD_VALUE_r11 1289 +#define MAX_UOP_REGS_ID 1289 #ifdef __cplusplus } diff --git a/Include/internal/pycore_uop_metadata.h b/Include/internal/pycore_uop_metadata.h index ec47c526ff122d..f600468c321642 100644 --- a/Include/internal/pycore_uop_metadata.h +++ b/Include/internal/pycore_uop_metadata.h @@ -108,12 +108,9 @@ const uint32_t _PyUop_Flags[MAX_UOP_ID+1] = { [_BINARY_OP_SUBTRACT_INT] = HAS_EXIT_FLAG | HAS_PURE_FLAG, [_GUARD_NOS_FLOAT] = HAS_EXIT_FLAG, [_GUARD_TOS_FLOAT] = HAS_EXIT_FLAG, - [_BINARY_OP_MULTIPLY_FLOAT] = HAS_ERROR_FLAG | HAS_PURE_FLAG, - [_BINARY_OP_ADD_FLOAT] = HAS_ERROR_FLAG | HAS_PURE_FLAG, - [_BINARY_OP_SUBTRACT_FLOAT] = HAS_ERROR_FLAG | HAS_PURE_FLAG, - [_BINARY_OP_MULTIPLY_FLOAT__NO_DECREF_INPUTS] = HAS_ERROR_FLAG | HAS_PURE_FLAG, - [_BINARY_OP_ADD_FLOAT__NO_DECREF_INPUTS] = HAS_ERROR_FLAG | HAS_PURE_FLAG, - [_BINARY_OP_SUBTRACT_FLOAT__NO_DECREF_INPUTS] = HAS_ERROR_FLAG | HAS_PURE_FLAG, + [_BINARY_OP_MULTIPLY_FLOAT] = HAS_ERROR_FLAG | HAS_ERROR_NO_POP_FLAG | HAS_PURE_FLAG, + [_BINARY_OP_ADD_FLOAT] = HAS_ERROR_FLAG | HAS_ERROR_NO_POP_FLAG | HAS_PURE_FLAG, + [_BINARY_OP_SUBTRACT_FLOAT] = HAS_ERROR_FLAG | HAS_ERROR_NO_POP_FLAG | HAS_PURE_FLAG, [_BINARY_OP_ADD_UNICODE] = HAS_ERROR_FLAG | HAS_PURE_FLAG, [_BINARY_OP_INPLACE_ADD_UNICODE] = HAS_LOCAL_FLAG | HAS_DEOPT_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG, [_GUARD_BINARY_OP_EXTEND] = HAS_DEOPT_FLAG | HAS_ESCAPES_FLAG, @@ -405,11 +402,11 @@ const _PyUopCachingInfo _PyUop_Caching[MAX_UOP_ID+1] = { }, }, [_LOAD_FAST_CHECK] = { - .best = { 0, 0, 0, 0 }, + .best = { 0, 1, 2, 2 }, .entries = { { 1, 0, _LOAD_FAST_CHECK_r01 }, - { -1, -1, -1 }, - { -1, -1, -1 }, + { 2, 1, _LOAD_FAST_CHECK_r12 }, + { 3, 2, _LOAD_FAST_CHECK_r23 }, { -1, -1, -1 }, }, }, @@ -813,7 +810,7 @@ const _PyUopCachingInfo _PyUop_Caching[MAX_UOP_ID+1] = { .best = { 1, 1, 1, 1 }, .entries = { { -1, -1, -1 }, - { 1, 0, _UNARY_NEGATIVE_r11 }, + { 1, 1, _UNARY_NEGATIVE_r11 }, { -1, -1, -1 }, { -1, -1, -1 }, }, @@ -831,7 +828,7 @@ const _PyUopCachingInfo _PyUop_Caching[MAX_UOP_ID+1] = { .best = { 1, 1, 1, 1 }, .entries = { { -1, -1, -1 }, - { 1, 0, _TO_BOOL_r11 }, + { 1, 1, _TO_BOOL_r11 }, { -1, -1, -1 }, { -1, -1, -1 }, }, @@ -939,7 +936,7 @@ const _PyUopCachingInfo _PyUop_Caching[MAX_UOP_ID+1] = { .best = { 1, 1, 1, 1 }, .entries = { { -1, -1, -1 }, - { 1, 0, _UNARY_INVERT_r11 }, + { 1, 1, _UNARY_INVERT_r11 }, { -1, -1, -1 }, { -1, -1, -1 }, }, @@ -981,30 +978,30 @@ const _PyUopCachingInfo _PyUop_Caching[MAX_UOP_ID+1] = { }, }, [_BINARY_OP_MULTIPLY_INT] = { - .best = { 0, 1, 2, 3 }, + .best = { 0, 1, 2, 2 }, .entries = { - { 1, 0, _BINARY_OP_MULTIPLY_INT_r01 }, - { 1, 1, _BINARY_OP_MULTIPLY_INT_r11 }, - { 1, 2, _BINARY_OP_MULTIPLY_INT_r21 }, - { 2, 3, _BINARY_OP_MULTIPLY_INT_r32 }, + { 3, 0, _BINARY_OP_MULTIPLY_INT_r03 }, + { 3, 1, _BINARY_OP_MULTIPLY_INT_r13 }, + { 3, 2, _BINARY_OP_MULTIPLY_INT_r23 }, + { -1, -1, -1 }, }, }, [_BINARY_OP_ADD_INT] = { - .best = { 0, 1, 2, 3 }, + .best = { 0, 1, 2, 2 }, .entries = { - { 1, 0, _BINARY_OP_ADD_INT_r01 }, - { 1, 1, _BINARY_OP_ADD_INT_r11 }, - { 1, 2, _BINARY_OP_ADD_INT_r21 }, - { 2, 3, _BINARY_OP_ADD_INT_r32 }, + { 3, 0, _BINARY_OP_ADD_INT_r03 }, + { 3, 1, _BINARY_OP_ADD_INT_r13 }, + { 3, 2, _BINARY_OP_ADD_INT_r23 }, + { -1, -1, -1 }, }, }, [_BINARY_OP_SUBTRACT_INT] = { - .best = { 0, 1, 2, 3 }, + .best = { 0, 1, 2, 2 }, .entries = { - { 1, 0, _BINARY_OP_SUBTRACT_INT_r01 }, - { 1, 1, _BINARY_OP_SUBTRACT_INT_r11 }, - { 1, 2, _BINARY_OP_SUBTRACT_INT_r21 }, - { 2, 3, _BINARY_OP_SUBTRACT_INT_r32 }, + { 3, 0, _BINARY_OP_SUBTRACT_INT_r03 }, + { 3, 1, _BINARY_OP_SUBTRACT_INT_r13 }, + { 3, 2, _BINARY_OP_SUBTRACT_INT_r23 }, + { -1, -1, -1 }, }, }, [_GUARD_NOS_FLOAT] = { @@ -1026,57 +1023,30 @@ const _PyUopCachingInfo _PyUop_Caching[MAX_UOP_ID+1] = { }, }, [_BINARY_OP_MULTIPLY_FLOAT] = { - .best = { 0, 1, 2, 3 }, + .best = { 0, 1, 2, 2 }, .entries = { - { 1, 0, _BINARY_OP_MULTIPLY_FLOAT_r01 }, - { 1, 1, _BINARY_OP_MULTIPLY_FLOAT_r11 }, - { 1, 2, _BINARY_OP_MULTIPLY_FLOAT_r21 }, - { 2, 3, _BINARY_OP_MULTIPLY_FLOAT_r32 }, + { 3, 0, _BINARY_OP_MULTIPLY_FLOAT_r03 }, + { 3, 1, _BINARY_OP_MULTIPLY_FLOAT_r13 }, + { 3, 2, _BINARY_OP_MULTIPLY_FLOAT_r23 }, + { -1, -1, -1 }, }, }, [_BINARY_OP_ADD_FLOAT] = { - .best = { 0, 1, 2, 3 }, + .best = { 0, 1, 2, 2 }, .entries = { - { 1, 0, _BINARY_OP_ADD_FLOAT_r01 }, - { 1, 1, _BINARY_OP_ADD_FLOAT_r11 }, - { 1, 2, _BINARY_OP_ADD_FLOAT_r21 }, - { 2, 3, _BINARY_OP_ADD_FLOAT_r32 }, + { 3, 0, _BINARY_OP_ADD_FLOAT_r03 }, + { 3, 1, _BINARY_OP_ADD_FLOAT_r13 }, + { 3, 2, _BINARY_OP_ADD_FLOAT_r23 }, + { -1, -1, -1 }, }, }, [_BINARY_OP_SUBTRACT_FLOAT] = { - .best = { 0, 1, 2, 3 }, - .entries = { - { 1, 0, _BINARY_OP_SUBTRACT_FLOAT_r01 }, - { 1, 1, _BINARY_OP_SUBTRACT_FLOAT_r11 }, - { 1, 2, _BINARY_OP_SUBTRACT_FLOAT_r21 }, - { 2, 3, _BINARY_OP_SUBTRACT_FLOAT_r32 }, - }, - }, - [_BINARY_OP_MULTIPLY_FLOAT__NO_DECREF_INPUTS] = { - .best = { 0, 1, 2, 3 }, - .entries = { - { 1, 0, _BINARY_OP_MULTIPLY_FLOAT__NO_DECREF_INPUTS_r01 }, - { 1, 1, _BINARY_OP_MULTIPLY_FLOAT__NO_DECREF_INPUTS_r11 }, - { 1, 2, _BINARY_OP_MULTIPLY_FLOAT__NO_DECREF_INPUTS_r21 }, - { 2, 3, _BINARY_OP_MULTIPLY_FLOAT__NO_DECREF_INPUTS_r32 }, - }, - }, - [_BINARY_OP_ADD_FLOAT__NO_DECREF_INPUTS] = { - .best = { 0, 1, 2, 3 }, - .entries = { - { 1, 0, _BINARY_OP_ADD_FLOAT__NO_DECREF_INPUTS_r01 }, - { 1, 1, _BINARY_OP_ADD_FLOAT__NO_DECREF_INPUTS_r11 }, - { 1, 2, _BINARY_OP_ADD_FLOAT__NO_DECREF_INPUTS_r21 }, - { 2, 3, _BINARY_OP_ADD_FLOAT__NO_DECREF_INPUTS_r32 }, - }, - }, - [_BINARY_OP_SUBTRACT_FLOAT__NO_DECREF_INPUTS] = { - .best = { 0, 1, 2, 3 }, + .best = { 0, 1, 2, 2 }, .entries = { - { 1, 0, _BINARY_OP_SUBTRACT_FLOAT__NO_DECREF_INPUTS_r01 }, - { 1, 1, _BINARY_OP_SUBTRACT_FLOAT__NO_DECREF_INPUTS_r11 }, - { 1, 2, _BINARY_OP_SUBTRACT_FLOAT__NO_DECREF_INPUTS_r21 }, - { 2, 3, _BINARY_OP_SUBTRACT_FLOAT__NO_DECREF_INPUTS_r32 }, + { 3, 0, _BINARY_OP_SUBTRACT_FLOAT_r03 }, + { 3, 1, _BINARY_OP_SUBTRACT_FLOAT_r13 }, + { 3, 2, _BINARY_OP_SUBTRACT_FLOAT_r23 }, + { -1, -1, -1 }, }, }, [_BINARY_OP_ADD_UNICODE] = { @@ -1093,7 +1063,7 @@ const _PyUopCachingInfo _PyUop_Caching[MAX_UOP_ID+1] = { .entries = { { -1, -1, -1 }, { -1, -1, -1 }, - { 0, 0, _BINARY_OP_INPLACE_ADD_UNICODE_r20 }, + { 0, 2, _BINARY_OP_INPLACE_ADD_UNICODE_r20 }, { -1, -1, -1 }, }, }, @@ -1102,7 +1072,7 @@ const _PyUopCachingInfo _PyUop_Caching[MAX_UOP_ID+1] = { .entries = { { -1, -1, -1 }, { -1, -1, -1 }, - { 2, 0, _GUARD_BINARY_OP_EXTEND_r22 }, + { 2, 2, _GUARD_BINARY_OP_EXTEND_r22 }, { -1, -1, -1 }, }, }, @@ -1111,7 +1081,7 @@ const _PyUopCachingInfo _PyUop_Caching[MAX_UOP_ID+1] = { .entries = { { -1, -1, -1 }, { -1, -1, -1 }, - { 1, 0, _BINARY_OP_EXTEND_r21 }, + { 1, 2, _BINARY_OP_EXTEND_r21 }, { -1, -1, -1 }, }, }, @@ -1121,7 +1091,7 @@ const _PyUopCachingInfo _PyUop_Caching[MAX_UOP_ID+1] = { { -1, -1, -1 }, { -1, -1, -1 }, { -1, -1, -1 }, - { 1, 0, _BINARY_SLICE_r31 }, + { 1, 3, _BINARY_SLICE_r31 }, }, }, [_STORE_SLICE] = { @@ -1130,7 +1100,7 @@ const _PyUopCachingInfo _PyUop_Caching[MAX_UOP_ID+1] = { { -1, -1, -1 }, { -1, -1, -1 }, { -1, -1, -1 }, - { 0, 0, _STORE_SLICE_r30 }, + { 0, 3, _STORE_SLICE_r30 }, }, }, [_BINARY_OP_SUBSCR_LIST_INT] = { @@ -1138,7 +1108,7 @@ const _PyUopCachingInfo _PyUop_Caching[MAX_UOP_ID+1] = { .entries = { { -1, -1, -1 }, { -1, -1, -1 }, - { 1, 0, _BINARY_OP_SUBSCR_LIST_INT_r21 }, + { 1, 2, _BINARY_OP_SUBSCR_LIST_INT_r21 }, { -1, -1, -1 }, }, }, @@ -1147,7 +1117,7 @@ const _PyUopCachingInfo _PyUop_Caching[MAX_UOP_ID+1] = { .entries = { { -1, -1, -1 }, { -1, -1, -1 }, - { 1, 0, _BINARY_OP_SUBSCR_LIST_SLICE_r21 }, + { 1, 2, _BINARY_OP_SUBSCR_LIST_SLICE_r21 }, { -1, -1, -1 }, }, }, @@ -1210,7 +1180,7 @@ const _PyUopCachingInfo _PyUop_Caching[MAX_UOP_ID+1] = { .entries = { { -1, -1, -1 }, { -1, -1, -1 }, - { 1, 0, _BINARY_OP_SUBSCR_DICT_r21 }, + { 1, 2, _BINARY_OP_SUBSCR_DICT_r21 }, { -1, -1, -1 }, }, }, @@ -1245,7 +1215,7 @@ const _PyUopCachingInfo _PyUop_Caching[MAX_UOP_ID+1] = { .best = { 1, 1, 1, 1 }, .entries = { { -1, -1, -1 }, - { 0, 0, _SET_ADD_r10 }, + { 0, 1, _SET_ADD_r10 }, { -1, -1, -1 }, { -1, -1, -1 }, }, @@ -1256,7 +1226,7 @@ const _PyUopCachingInfo _PyUop_Caching[MAX_UOP_ID+1] = { { -1, -1, -1 }, { -1, -1, -1 }, { -1, -1, -1 }, - { 0, 0, _STORE_SUBSCR_r30 }, + { 0, 3, _STORE_SUBSCR_r30 }, }, }, [_STORE_SUBSCR_LIST_INT] = { @@ -1274,7 +1244,7 @@ const _PyUopCachingInfo _PyUop_Caching[MAX_UOP_ID+1] = { { -1, -1, -1 }, { -1, -1, -1 }, { -1, -1, -1 }, - { 1, 0, _STORE_SUBSCR_DICT_r31 }, + { 1, 3, _STORE_SUBSCR_DICT_r31 }, }, }, [_DELETE_SUBSCR] = { @@ -1282,7 +1252,7 @@ const _PyUopCachingInfo _PyUop_Caching[MAX_UOP_ID+1] = { .entries = { { -1, -1, -1 }, { -1, -1, -1 }, - { 0, 0, _DELETE_SUBSCR_r20 }, + { 0, 2, _DELETE_SUBSCR_r20 }, { -1, -1, -1 }, }, }, @@ -1290,7 +1260,7 @@ const _PyUopCachingInfo _PyUop_Caching[MAX_UOP_ID+1] = { .best = { 1, 1, 1, 1 }, .entries = { { -1, -1, -1 }, - { 1, 0, _CALL_INTRINSIC_1_r11 }, + { 1, 1, _CALL_INTRINSIC_1_r11 }, { -1, -1, -1 }, { -1, -1, -1 }, }, @@ -1300,7 +1270,7 @@ const _PyUopCachingInfo _PyUop_Caching[MAX_UOP_ID+1] = { .entries = { { -1, -1, -1 }, { -1, -1, -1 }, - { 1, 0, _CALL_INTRINSIC_2_r21 }, + { 1, 2, _CALL_INTRINSIC_2_r21 }, { -1, -1, -1 }, }, }, @@ -1308,7 +1278,7 @@ const _PyUopCachingInfo _PyUop_Caching[MAX_UOP_ID+1] = { .best = { 1, 1, 1, 1 }, .entries = { { -1, -1, -1 }, - { 1, 0, _RETURN_VALUE_r11 }, + { 1, 1, _RETURN_VALUE_r11 }, { -1, -1, -1 }, { -1, -1, -1 }, }, @@ -1317,7 +1287,7 @@ const _PyUopCachingInfo _PyUop_Caching[MAX_UOP_ID+1] = { .best = { 1, 1, 1, 1 }, .entries = { { -1, -1, -1 }, - { 1, 0, _GET_AITER_r11 }, + { 1, 1, _GET_AITER_r11 }, { -1, -1, -1 }, { -1, -1, -1 }, }, @@ -1326,7 +1296,7 @@ const _PyUopCachingInfo _PyUop_Caching[MAX_UOP_ID+1] = { .best = { 1, 1, 1, 1 }, .entries = { { -1, -1, -1 }, - { 2, 0, _GET_ANEXT_r12 }, + { 2, 1, _GET_ANEXT_r12 }, { -1, -1, -1 }, { -1, -1, -1 }, }, @@ -1335,7 +1305,7 @@ const _PyUopCachingInfo _PyUop_Caching[MAX_UOP_ID+1] = { .best = { 1, 1, 1, 1 }, .entries = { { -1, -1, -1 }, - { 1, 0, _GET_AWAITABLE_r11 }, + { 1, 1, _GET_AWAITABLE_r11 }, { -1, -1, -1 }, { -1, -1, -1 }, }, @@ -1362,7 +1332,7 @@ const _PyUopCachingInfo _PyUop_Caching[MAX_UOP_ID+1] = { .best = { 1, 1, 1, 1 }, .entries = { { -1, -1, -1 }, - { 0, 0, _POP_EXCEPT_r10 }, + { 0, 1, _POP_EXCEPT_r10 }, { -1, -1, -1 }, { -1, -1, -1 }, }, @@ -1389,7 +1359,7 @@ const _PyUopCachingInfo _PyUop_Caching[MAX_UOP_ID+1] = { .best = { 1, 1, 1, 1 }, .entries = { { -1, -1, -1 }, - { 0, 0, _STORE_NAME_r10 }, + { 0, 1, _STORE_NAME_r10 }, { -1, -1, -1 }, { -1, -1, -1 }, }, @@ -1407,7 +1377,7 @@ const _PyUopCachingInfo _PyUop_Caching[MAX_UOP_ID+1] = { .best = { 1, 1, 1, 1 }, .entries = { { -1, -1, -1 }, - { 0, 0, _UNPACK_SEQUENCE_r10 }, + { 0, 1, _UNPACK_SEQUENCE_r10 }, { -1, -1, -1 }, { -1, -1, -1 }, }, @@ -1443,7 +1413,7 @@ const _PyUopCachingInfo _PyUop_Caching[MAX_UOP_ID+1] = { .best = { 1, 1, 1, 1 }, .entries = { { -1, -1, -1 }, - { 0, 0, _UNPACK_EX_r10 }, + { 0, 1, _UNPACK_EX_r10 }, { -1, -1, -1 }, { -1, -1, -1 }, }, @@ -1453,7 +1423,7 @@ const _PyUopCachingInfo _PyUop_Caching[MAX_UOP_ID+1] = { .entries = { { -1, -1, -1 }, { -1, -1, -1 }, - { 0, 0, _STORE_ATTR_r20 }, + { 0, 2, _STORE_ATTR_r20 }, { -1, -1, -1 }, }, }, @@ -1461,7 +1431,7 @@ const _PyUopCachingInfo _PyUop_Caching[MAX_UOP_ID+1] = { .best = { 1, 1, 1, 1 }, .entries = { { -1, -1, -1 }, - { 0, 0, _DELETE_ATTR_r10 }, + { 0, 1, _DELETE_ATTR_r10 }, { -1, -1, -1 }, { -1, -1, -1 }, }, @@ -1470,7 +1440,7 @@ const _PyUopCachingInfo _PyUop_Caching[MAX_UOP_ID+1] = { .best = { 1, 1, 1, 1 }, .entries = { { -1, -1, -1 }, - { 0, 0, _STORE_GLOBAL_r10 }, + { 0, 1, _STORE_GLOBAL_r10 }, { -1, -1, -1 }, { -1, -1, -1 }, }, @@ -1485,11 +1455,11 @@ const _PyUopCachingInfo _PyUop_Caching[MAX_UOP_ID+1] = { }, }, [_LOAD_LOCALS] = { - .best = { 0, 0, 0, 0 }, + .best = { 0, 1, 2, 2 }, .entries = { { 1, 0, _LOAD_LOCALS_r01 }, - { -1, -1, -1 }, - { -1, -1, -1 }, + { 2, 1, _LOAD_LOCALS_r12 }, + { 3, 2, _LOAD_LOCALS_r23 }, { -1, -1, -1 }, }, }, @@ -1578,7 +1548,7 @@ const _PyUopCachingInfo _PyUop_Caching[MAX_UOP_ID+1] = { .best = { 1, 1, 1, 1 }, .entries = { { -1, -1, -1 }, - { 1, 0, _LOAD_FROM_DICT_OR_DEREF_r11 }, + { 1, 1, _LOAD_FROM_DICT_OR_DEREF_r11 }, { -1, -1, -1 }, { -1, -1, -1 }, }, @@ -1596,7 +1566,7 @@ const _PyUopCachingInfo _PyUop_Caching[MAX_UOP_ID+1] = { .best = { 1, 1, 1, 1 }, .entries = { { -1, -1, -1 }, - { 0, 0, _STORE_DEREF_r10 }, + { 0, 1, _STORE_DEREF_r10 }, { -1, -1, -1 }, { -1, -1, -1 }, }, @@ -1633,7 +1603,7 @@ const _PyUopCachingInfo _PyUop_Caching[MAX_UOP_ID+1] = { .entries = { { -1, -1, -1 }, { -1, -1, -1 }, - { 1, 0, _BUILD_TEMPLATE_r21 }, + { 1, 2, _BUILD_TEMPLATE_r21 }, { -1, -1, -1 }, }, }, @@ -1659,7 +1629,7 @@ const _PyUopCachingInfo _PyUop_Caching[MAX_UOP_ID+1] = { .best = { 1, 1, 1, 1 }, .entries = { { -1, -1, -1 }, - { 0, 0, _LIST_EXTEND_r10 }, + { 0, 1, _LIST_EXTEND_r10 }, { -1, -1, -1 }, { -1, -1, -1 }, }, @@ -1668,7 +1638,7 @@ const _PyUopCachingInfo _PyUop_Caching[MAX_UOP_ID+1] = { .best = { 1, 1, 1, 1 }, .entries = { { -1, -1, -1 }, - { 0, 0, _SET_UPDATE_r10 }, + { 0, 1, _SET_UPDATE_r10 }, { -1, -1, -1 }, { -1, -1, -1 }, }, @@ -1704,7 +1674,7 @@ const _PyUopCachingInfo _PyUop_Caching[MAX_UOP_ID+1] = { .best = { 1, 1, 1, 1 }, .entries = { { -1, -1, -1 }, - { 0, 0, _DICT_UPDATE_r10 }, + { 0, 1, _DICT_UPDATE_r10 }, { -1, -1, -1 }, { -1, -1, -1 }, }, @@ -1713,7 +1683,7 @@ const _PyUopCachingInfo _PyUop_Caching[MAX_UOP_ID+1] = { .best = { 1, 1, 1, 1 }, .entries = { { -1, -1, -1 }, - { 0, 0, _DICT_MERGE_r10 }, + { 0, 1, _DICT_MERGE_r10 }, { -1, -1, -1 }, { -1, -1, -1 }, }, @@ -1723,7 +1693,7 @@ const _PyUopCachingInfo _PyUop_Caching[MAX_UOP_ID+1] = { .entries = { { -1, -1, -1 }, { -1, -1, -1 }, - { 0, 0, _MAP_ADD_r20 }, + { 0, 2, _MAP_ADD_r20 }, { -1, -1, -1 }, }, }, @@ -1733,7 +1703,7 @@ const _PyUopCachingInfo _PyUop_Caching[MAX_UOP_ID+1] = { { -1, -1, -1 }, { -1, -1, -1 }, { -1, -1, -1 }, - { 1, 0, _LOAD_SUPER_ATTR_ATTR_r31 }, + { 1, 3, _LOAD_SUPER_ATTR_ATTR_r31 }, }, }, [_LOAD_SUPER_ATTR_METHOD] = { @@ -1742,14 +1712,14 @@ const _PyUopCachingInfo _PyUop_Caching[MAX_UOP_ID+1] = { { -1, -1, -1 }, { -1, -1, -1 }, { -1, -1, -1 }, - { 2, 0, _LOAD_SUPER_ATTR_METHOD_r32 }, + { 2, 3, _LOAD_SUPER_ATTR_METHOD_r32 }, }, }, [_LOAD_ATTR] = { .best = { 1, 1, 1, 1 }, .entries = { { -1, -1, -1 }, - { 0, 0, _LOAD_ATTR_r10 }, + { 0, 1, _LOAD_ATTR_r10 }, { -1, -1, -1 }, { -1, -1, -1 }, }, @@ -1858,7 +1828,7 @@ const _PyUopCachingInfo _PyUop_Caching[MAX_UOP_ID+1] = { .entries = { { -1, -1, -1 }, { -1, -1, -1 }, - { 0, 2, _STORE_ATTR_INSTANCE_VALUE_r20 }, + { 1, 2, _STORE_ATTR_INSTANCE_VALUE_r21 }, { -1, -1, -1 }, }, }, @@ -1867,7 +1837,7 @@ const _PyUopCachingInfo _PyUop_Caching[MAX_UOP_ID+1] = { .entries = { { -1, -1, -1 }, { -1, -1, -1 }, - { 0, 0, _STORE_ATTR_WITH_HINT_r20 }, + { 0, 2, _STORE_ATTR_WITH_HINT_r20 }, { -1, -1, -1 }, }, }, @@ -1876,7 +1846,7 @@ const _PyUopCachingInfo _PyUop_Caching[MAX_UOP_ID+1] = { .entries = { { -1, -1, -1 }, { -1, -1, -1 }, - { 0, 2, _STORE_ATTR_SLOT_r20 }, + { 1, 2, _STORE_ATTR_SLOT_r21 }, { -1, -1, -1 }, }, }, @@ -1885,7 +1855,7 @@ const _PyUopCachingInfo _PyUop_Caching[MAX_UOP_ID+1] = { .entries = { { -1, -1, -1 }, { -1, -1, -1 }, - { 1, 0, _COMPARE_OP_r21 }, + { 1, 2, _COMPARE_OP_r21 }, { -1, -1, -1 }, }, }, @@ -1903,7 +1873,7 @@ const _PyUopCachingInfo _PyUop_Caching[MAX_UOP_ID+1] = { .entries = { { -1, -1, -1 }, { -1, -1, -1 }, - { 1, 2, _COMPARE_OP_INT_r21 }, + { 3, 2, _COMPARE_OP_INT_r23 }, { -1, -1, -1 }, }, }, @@ -1930,7 +1900,7 @@ const _PyUopCachingInfo _PyUop_Caching[MAX_UOP_ID+1] = { .entries = { { -1, -1, -1 }, { -1, -1, -1 }, - { 1, 0, _CONTAINS_OP_r21 }, + { 1, 2, _CONTAINS_OP_r21 }, { -1, -1, -1 }, }, }, @@ -1948,7 +1918,7 @@ const _PyUopCachingInfo _PyUop_Caching[MAX_UOP_ID+1] = { .entries = { { -1, -1, -1 }, { -1, -1, -1 }, - { 1, 0, _CONTAINS_OP_SET_r21 }, + { 1, 2, _CONTAINS_OP_SET_r21 }, { -1, -1, -1 }, }, }, @@ -1957,7 +1927,7 @@ const _PyUopCachingInfo _PyUop_Caching[MAX_UOP_ID+1] = { .entries = { { -1, -1, -1 }, { -1, -1, -1 }, - { 1, 0, _CONTAINS_OP_DICT_r21 }, + { 1, 2, _CONTAINS_OP_DICT_r21 }, { -1, -1, -1 }, }, }, @@ -1966,7 +1936,7 @@ const _PyUopCachingInfo _PyUop_Caching[MAX_UOP_ID+1] = { .entries = { { -1, -1, -1 }, { -1, -1, -1 }, - { 2, 0, _CHECK_EG_MATCH_r22 }, + { 2, 2, _CHECK_EG_MATCH_r22 }, { -1, -1, -1 }, }, }, @@ -1975,7 +1945,7 @@ const _PyUopCachingInfo _PyUop_Caching[MAX_UOP_ID+1] = { .entries = { { -1, -1, -1 }, { -1, -1, -1 }, - { 2, 0, _CHECK_EXC_MATCH_r22 }, + { 2, 2, _CHECK_EXC_MATCH_r22 }, { -1, -1, -1 }, }, }, @@ -1984,7 +1954,7 @@ const _PyUopCachingInfo _PyUop_Caching[MAX_UOP_ID+1] = { .entries = { { -1, -1, -1 }, { -1, -1, -1 }, - { 1, 0, _IMPORT_NAME_r21 }, + { 1, 2, _IMPORT_NAME_r21 }, { -1, -1, -1 }, }, }, @@ -1992,7 +1962,7 @@ const _PyUopCachingInfo _PyUop_Caching[MAX_UOP_ID+1] = { .best = { 1, 1, 1, 1 }, .entries = { { -1, -1, -1 }, - { 2, 0, _IMPORT_FROM_r12 }, + { 2, 1, _IMPORT_FROM_r12 }, { -1, -1, -1 }, { -1, -1, -1 }, }, @@ -2010,7 +1980,7 @@ const _PyUopCachingInfo _PyUop_Caching[MAX_UOP_ID+1] = { .best = { 1, 1, 1, 1 }, .entries = { { -1, -1, -1 }, - { 2, 0, _GET_LEN_r12 }, + { 2, 1, _GET_LEN_r12 }, { -1, -1, -1 }, { -1, -1, -1 }, }, @@ -2021,7 +1991,7 @@ const _PyUopCachingInfo _PyUop_Caching[MAX_UOP_ID+1] = { { -1, -1, -1 }, { -1, -1, -1 }, { -1, -1, -1 }, - { 1, 0, _MATCH_CLASS_r31 }, + { 1, 3, _MATCH_CLASS_r31 }, }, }, [_MATCH_MAPPING] = { @@ -2047,7 +2017,7 @@ const _PyUopCachingInfo _PyUop_Caching[MAX_UOP_ID+1] = { .entries = { { -1, -1, -1 }, { -1, -1, -1 }, - { 3, 0, _MATCH_KEYS_r23 }, + { 3, 2, _MATCH_KEYS_r23 }, { -1, -1, -1 }, }, }, @@ -2055,7 +2025,7 @@ const _PyUopCachingInfo _PyUop_Caching[MAX_UOP_ID+1] = { .best = { 1, 1, 1, 1 }, .entries = { { -1, -1, -1 }, - { 2, 0, _GET_ITER_r12 }, + { 2, 1, _GET_ITER_r12 }, { -1, -1, -1 }, { -1, -1, -1 }, }, @@ -2064,7 +2034,7 @@ const _PyUopCachingInfo _PyUop_Caching[MAX_UOP_ID+1] = { .best = { 1, 1, 1, 1 }, .entries = { { -1, -1, -1 }, - { 1, 0, _GET_YIELD_FROM_ITER_r11 }, + { 1, 1, _GET_YIELD_FROM_ITER_r11 }, { -1, -1, -1 }, { -1, -1, -1 }, }, @@ -2074,7 +2044,7 @@ const _PyUopCachingInfo _PyUop_Caching[MAX_UOP_ID+1] = { .entries = { { -1, -1, -1 }, { -1, -1, -1 }, - { 3, 0, _FOR_ITER_TIER_TWO_r23 }, + { 3, 2, _FOR_ITER_TIER_TWO_r23 }, { -1, -1, -1 }, }, }, @@ -2101,7 +2071,7 @@ const _PyUopCachingInfo _PyUop_Caching[MAX_UOP_ID+1] = { .entries = { { -1, -1, -1 }, { -1, -1, -1 }, - { 3, 0, _ITER_NEXT_LIST_TIER_TWO_r23 }, + { 3, 2, _ITER_NEXT_LIST_TIER_TWO_r23 }, { -1, -1, -1 }, }, }, @@ -2192,7 +2162,7 @@ const _PyUopCachingInfo _PyUop_Caching[MAX_UOP_ID+1] = { { -1, -1, -1 }, { -1, -1, -1 }, { -1, -1, -1 }, - { 3, 0, _WITH_EXCEPT_START_r33 }, + { 3, 3, _WITH_EXCEPT_START_r33 }, }, }, [_PUSH_EXC_INFO] = { @@ -2288,7 +2258,7 @@ const _PyUopCachingInfo _PyUop_Caching[MAX_UOP_ID+1] = { [_PY_FRAME_GENERAL] = { .best = { 0, 0, 0, 0 }, .entries = { - { 1, 0, _PY_FRAME_GENERAL_r01 }, + { 1, 1, _PY_FRAME_GENERAL_r01 }, { -1, -1, -1 }, { -1, -1, -1 }, { -1, -1, -1 }, @@ -2525,7 +2495,7 @@ const _PyUopCachingInfo _PyUop_Caching[MAX_UOP_ID+1] = { { -1, -1, -1 }, { -1, -1, -1 }, { -1, -1, -1 }, - { 2, 0, _CALL_STR_1_r32 }, + { 2, 3, _CALL_STR_1_r32 }, }, }, [_GUARD_CALLABLE_TUPLE_1] = { @@ -2543,7 +2513,7 @@ const _PyUopCachingInfo _PyUop_Caching[MAX_UOP_ID+1] = { { -1, -1, -1 }, { -1, -1, -1 }, { -1, -1, -1 }, - { 2, 0, _CALL_TUPLE_1_r32 }, + { 2, 3, _CALL_TUPLE_1_r32 }, }, }, [_CHECK_AND_ALLOCATE_OBJECT] = { @@ -2558,7 +2528,7 @@ const _PyUopCachingInfo _PyUop_Caching[MAX_UOP_ID+1] = { [_CREATE_INIT_FRAME] = { .best = { 0, 0, 0, 0 }, .entries = { - { 1, 0, _CREATE_INIT_FRAME_r01 }, + { 1, 1, _CREATE_INIT_FRAME_r01 }, { -1, -1, -1 }, { -1, -1, -1 }, { -1, -1, -1 }, @@ -2568,7 +2538,7 @@ const _PyUopCachingInfo _PyUop_Caching[MAX_UOP_ID+1] = { .best = { 1, 1, 1, 1 }, .entries = { { -1, -1, -1 }, - { 0, 0, _EXIT_INIT_CHECK_r10 }, + { 0, 1, _EXIT_INIT_CHECK_r10 }, { -1, -1, -1 }, { -1, -1, -1 }, }, @@ -2624,7 +2594,7 @@ const _PyUopCachingInfo _PyUop_Caching[MAX_UOP_ID+1] = { { -1, -1, -1 }, { -1, -1, -1 }, { -1, -1, -1 }, - { 3, 0, _CALL_LEN_r33 }, + { 3, 3, _CALL_LEN_r33 }, }, }, [_GUARD_CALLABLE_ISINSTANCE] = { @@ -2642,7 +2612,7 @@ const _PyUopCachingInfo _PyUop_Caching[MAX_UOP_ID+1] = { { -1, -1, -1 }, { -1, -1, -1 }, { -1, -1, -1 }, - { 1, 0, _CALL_ISINSTANCE_r31 }, + { 1, 3, _CALL_ISINSTANCE_r31 }, }, }, [_GUARD_CALLABLE_LIST_APPEND] = { @@ -2712,7 +2682,7 @@ const _PyUopCachingInfo _PyUop_Caching[MAX_UOP_ID+1] = { .best = { 1, 1, 1, 1 }, .entries = { { -1, -1, -1 }, - { 1, 0, _PY_FRAME_KW_r11 }, + { 1, 1, _PY_FRAME_KW_r11 }, { -1, -1, -1 }, { -1, -1, -1 }, }, @@ -2757,7 +2727,7 @@ const _PyUopCachingInfo _PyUop_Caching[MAX_UOP_ID+1] = { .best = { 1, 1, 1, 1 }, .entries = { { -1, -1, -1 }, - { 1, 0, _CALL_KW_NON_PY_r11 }, + { 1, 1, _CALL_KW_NON_PY_r11 }, { -1, -1, -1 }, { -1, -1, -1 }, }, @@ -2768,14 +2738,14 @@ const _PyUopCachingInfo _PyUop_Caching[MAX_UOP_ID+1] = { { -1, -1, -1 }, { -1, -1, -1 }, { -1, -1, -1 }, - { 3, 0, _MAKE_CALLARGS_A_TUPLE_r33 }, + { 3, 3, _MAKE_CALLARGS_A_TUPLE_r33 }, }, }, [_MAKE_FUNCTION] = { .best = { 1, 1, 1, 1 }, .entries = { { -1, -1, -1 }, - { 1, 0, _MAKE_FUNCTION_r11 }, + { 1, 1, _MAKE_FUNCTION_r11 }, { -1, -1, -1 }, { -1, -1, -1 }, }, @@ -2811,7 +2781,7 @@ const _PyUopCachingInfo _PyUop_Caching[MAX_UOP_ID+1] = { .best = { 1, 1, 1, 1 }, .entries = { { -1, -1, -1 }, - { 1, 0, _CONVERT_VALUE_r11 }, + { 1, 1, _CONVERT_VALUE_r11 }, { -1, -1, -1 }, { -1, -1, -1 }, }, @@ -2820,7 +2790,7 @@ const _PyUopCachingInfo _PyUop_Caching[MAX_UOP_ID+1] = { .best = { 1, 1, 1, 1 }, .entries = { { -1, -1, -1 }, - { 1, 0, _FORMAT_SIMPLE_r11 }, + { 1, 1, _FORMAT_SIMPLE_r11 }, { -1, -1, -1 }, { -1, -1, -1 }, }, @@ -2830,7 +2800,7 @@ const _PyUopCachingInfo _PyUop_Caching[MAX_UOP_ID+1] = { .entries = { { -1, -1, -1 }, { -1, -1, -1 }, - { 1, 0, _FORMAT_WITH_SPEC_r21 }, + { 1, 2, _FORMAT_WITH_SPEC_r21 }, { -1, -1, -1 }, }, }, @@ -2875,7 +2845,7 @@ const _PyUopCachingInfo _PyUop_Caching[MAX_UOP_ID+1] = { .entries = { { -1, -1, -1 }, { -1, -1, -1 }, - { 1, 0, _BINARY_OP_r21 }, + { 1, 2, _BINARY_OP_r21 }, { -1, -1, -1 }, }, }, @@ -3253,6 +3223,8 @@ const uint16_t _PyUop_Uncached[MAX_UOP_REGS_ID+1] = { [_RESUME_CHECK_r22] = _RESUME_CHECK, [_RESUME_CHECK_r33] = _RESUME_CHECK, [_LOAD_FAST_CHECK_r01] = _LOAD_FAST_CHECK, + [_LOAD_FAST_CHECK_r12] = _LOAD_FAST_CHECK, + [_LOAD_FAST_CHECK_r23] = _LOAD_FAST_CHECK, [_LOAD_FAST_0_r01] = _LOAD_FAST_0, [_LOAD_FAST_0_r12] = _LOAD_FAST_0, [_LOAD_FAST_0_r23] = _LOAD_FAST_0, @@ -3416,18 +3388,15 @@ const uint16_t _PyUop_Uncached[MAX_UOP_REGS_ID+1] = { [_GUARD_TOS_OVERFLOWED_r11] = _GUARD_TOS_OVERFLOWED, [_GUARD_TOS_OVERFLOWED_r22] = _GUARD_TOS_OVERFLOWED, [_GUARD_TOS_OVERFLOWED_r33] = _GUARD_TOS_OVERFLOWED, - [_BINARY_OP_MULTIPLY_INT_r01] = _BINARY_OP_MULTIPLY_INT, - [_BINARY_OP_MULTIPLY_INT_r11] = _BINARY_OP_MULTIPLY_INT, - [_BINARY_OP_MULTIPLY_INT_r21] = _BINARY_OP_MULTIPLY_INT, - [_BINARY_OP_MULTIPLY_INT_r32] = _BINARY_OP_MULTIPLY_INT, - [_BINARY_OP_ADD_INT_r01] = _BINARY_OP_ADD_INT, - [_BINARY_OP_ADD_INT_r11] = _BINARY_OP_ADD_INT, - [_BINARY_OP_ADD_INT_r21] = _BINARY_OP_ADD_INT, - [_BINARY_OP_ADD_INT_r32] = _BINARY_OP_ADD_INT, - [_BINARY_OP_SUBTRACT_INT_r01] = _BINARY_OP_SUBTRACT_INT, - [_BINARY_OP_SUBTRACT_INT_r11] = _BINARY_OP_SUBTRACT_INT, - [_BINARY_OP_SUBTRACT_INT_r21] = _BINARY_OP_SUBTRACT_INT, - [_BINARY_OP_SUBTRACT_INT_r32] = _BINARY_OP_SUBTRACT_INT, + [_BINARY_OP_MULTIPLY_INT_r03] = _BINARY_OP_MULTIPLY_INT, + [_BINARY_OP_MULTIPLY_INT_r13] = _BINARY_OP_MULTIPLY_INT, + [_BINARY_OP_MULTIPLY_INT_r23] = _BINARY_OP_MULTIPLY_INT, + [_BINARY_OP_ADD_INT_r03] = _BINARY_OP_ADD_INT, + [_BINARY_OP_ADD_INT_r13] = _BINARY_OP_ADD_INT, + [_BINARY_OP_ADD_INT_r23] = _BINARY_OP_ADD_INT, + [_BINARY_OP_SUBTRACT_INT_r03] = _BINARY_OP_SUBTRACT_INT, + [_BINARY_OP_SUBTRACT_INT_r13] = _BINARY_OP_SUBTRACT_INT, + [_BINARY_OP_SUBTRACT_INT_r23] = _BINARY_OP_SUBTRACT_INT, [_GUARD_NOS_FLOAT_r02] = _GUARD_NOS_FLOAT, [_GUARD_NOS_FLOAT_r12] = _GUARD_NOS_FLOAT, [_GUARD_NOS_FLOAT_r22] = _GUARD_NOS_FLOAT, @@ -3436,30 +3405,15 @@ const uint16_t _PyUop_Uncached[MAX_UOP_REGS_ID+1] = { [_GUARD_TOS_FLOAT_r11] = _GUARD_TOS_FLOAT, [_GUARD_TOS_FLOAT_r22] = _GUARD_TOS_FLOAT, [_GUARD_TOS_FLOAT_r33] = _GUARD_TOS_FLOAT, - [_BINARY_OP_MULTIPLY_FLOAT_r01] = _BINARY_OP_MULTIPLY_FLOAT, - [_BINARY_OP_MULTIPLY_FLOAT_r11] = _BINARY_OP_MULTIPLY_FLOAT, - [_BINARY_OP_MULTIPLY_FLOAT_r21] = _BINARY_OP_MULTIPLY_FLOAT, - [_BINARY_OP_MULTIPLY_FLOAT_r32] = _BINARY_OP_MULTIPLY_FLOAT, - [_BINARY_OP_ADD_FLOAT_r01] = _BINARY_OP_ADD_FLOAT, - [_BINARY_OP_ADD_FLOAT_r11] = _BINARY_OP_ADD_FLOAT, - [_BINARY_OP_ADD_FLOAT_r21] = _BINARY_OP_ADD_FLOAT, - [_BINARY_OP_ADD_FLOAT_r32] = _BINARY_OP_ADD_FLOAT, - [_BINARY_OP_SUBTRACT_FLOAT_r01] = _BINARY_OP_SUBTRACT_FLOAT, - [_BINARY_OP_SUBTRACT_FLOAT_r11] = _BINARY_OP_SUBTRACT_FLOAT, - [_BINARY_OP_SUBTRACT_FLOAT_r21] = _BINARY_OP_SUBTRACT_FLOAT, - [_BINARY_OP_SUBTRACT_FLOAT_r32] = _BINARY_OP_SUBTRACT_FLOAT, - [_BINARY_OP_MULTIPLY_FLOAT__NO_DECREF_INPUTS_r01] = _BINARY_OP_MULTIPLY_FLOAT__NO_DECREF_INPUTS, - [_BINARY_OP_MULTIPLY_FLOAT__NO_DECREF_INPUTS_r11] = _BINARY_OP_MULTIPLY_FLOAT__NO_DECREF_INPUTS, - [_BINARY_OP_MULTIPLY_FLOAT__NO_DECREF_INPUTS_r21] = _BINARY_OP_MULTIPLY_FLOAT__NO_DECREF_INPUTS, - [_BINARY_OP_MULTIPLY_FLOAT__NO_DECREF_INPUTS_r32] = _BINARY_OP_MULTIPLY_FLOAT__NO_DECREF_INPUTS, - [_BINARY_OP_ADD_FLOAT__NO_DECREF_INPUTS_r01] = _BINARY_OP_ADD_FLOAT__NO_DECREF_INPUTS, - [_BINARY_OP_ADD_FLOAT__NO_DECREF_INPUTS_r11] = _BINARY_OP_ADD_FLOAT__NO_DECREF_INPUTS, - [_BINARY_OP_ADD_FLOAT__NO_DECREF_INPUTS_r21] = _BINARY_OP_ADD_FLOAT__NO_DECREF_INPUTS, - [_BINARY_OP_ADD_FLOAT__NO_DECREF_INPUTS_r32] = _BINARY_OP_ADD_FLOAT__NO_DECREF_INPUTS, - [_BINARY_OP_SUBTRACT_FLOAT__NO_DECREF_INPUTS_r01] = _BINARY_OP_SUBTRACT_FLOAT__NO_DECREF_INPUTS, - [_BINARY_OP_SUBTRACT_FLOAT__NO_DECREF_INPUTS_r11] = _BINARY_OP_SUBTRACT_FLOAT__NO_DECREF_INPUTS, - [_BINARY_OP_SUBTRACT_FLOAT__NO_DECREF_INPUTS_r21] = _BINARY_OP_SUBTRACT_FLOAT__NO_DECREF_INPUTS, - [_BINARY_OP_SUBTRACT_FLOAT__NO_DECREF_INPUTS_r32] = _BINARY_OP_SUBTRACT_FLOAT__NO_DECREF_INPUTS, + [_BINARY_OP_MULTIPLY_FLOAT_r03] = _BINARY_OP_MULTIPLY_FLOAT, + [_BINARY_OP_MULTIPLY_FLOAT_r13] = _BINARY_OP_MULTIPLY_FLOAT, + [_BINARY_OP_MULTIPLY_FLOAT_r23] = _BINARY_OP_MULTIPLY_FLOAT, + [_BINARY_OP_ADD_FLOAT_r03] = _BINARY_OP_ADD_FLOAT, + [_BINARY_OP_ADD_FLOAT_r13] = _BINARY_OP_ADD_FLOAT, + [_BINARY_OP_ADD_FLOAT_r23] = _BINARY_OP_ADD_FLOAT, + [_BINARY_OP_SUBTRACT_FLOAT_r03] = _BINARY_OP_SUBTRACT_FLOAT, + [_BINARY_OP_SUBTRACT_FLOAT_r13] = _BINARY_OP_SUBTRACT_FLOAT, + [_BINARY_OP_SUBTRACT_FLOAT_r23] = _BINARY_OP_SUBTRACT_FLOAT, [_BINARY_OP_ADD_UNICODE_r01] = _BINARY_OP_ADD_UNICODE, [_BINARY_OP_ADD_UNICODE_r11] = _BINARY_OP_ADD_UNICODE, [_BINARY_OP_ADD_UNICODE_r21] = _BINARY_OP_ADD_UNICODE, @@ -3526,6 +3480,8 @@ const uint16_t _PyUop_Uncached[MAX_UOP_REGS_ID+1] = { [_STORE_GLOBAL_r10] = _STORE_GLOBAL, [_DELETE_GLOBAL_r00] = _DELETE_GLOBAL, [_LOAD_LOCALS_r01] = _LOAD_LOCALS, + [_LOAD_LOCALS_r12] = _LOAD_LOCALS, + [_LOAD_LOCALS_r23] = _LOAD_LOCALS, [_LOAD_NAME_r01] = _LOAD_NAME, [_LOAD_GLOBAL_r00] = _LOAD_GLOBAL, [_PUSH_NULL_CONDITIONAL_r00] = _PUSH_NULL_CONDITIONAL, @@ -3587,15 +3543,15 @@ const uint16_t _PyUop_Uncached[MAX_UOP_REGS_ID+1] = { [_GUARD_DORV_NO_DICT_r11] = _GUARD_DORV_NO_DICT, [_GUARD_DORV_NO_DICT_r22] = _GUARD_DORV_NO_DICT, [_GUARD_DORV_NO_DICT_r33] = _GUARD_DORV_NO_DICT, - [_STORE_ATTR_INSTANCE_VALUE_r20] = _STORE_ATTR_INSTANCE_VALUE, + [_STORE_ATTR_INSTANCE_VALUE_r21] = _STORE_ATTR_INSTANCE_VALUE, [_STORE_ATTR_WITH_HINT_r20] = _STORE_ATTR_WITH_HINT, - [_STORE_ATTR_SLOT_r20] = _STORE_ATTR_SLOT, + [_STORE_ATTR_SLOT_r21] = _STORE_ATTR_SLOT, [_COMPARE_OP_r21] = _COMPARE_OP, [_COMPARE_OP_FLOAT_r01] = _COMPARE_OP_FLOAT, [_COMPARE_OP_FLOAT_r11] = _COMPARE_OP_FLOAT, [_COMPARE_OP_FLOAT_r21] = _COMPARE_OP_FLOAT, [_COMPARE_OP_FLOAT_r32] = _COMPARE_OP_FLOAT, - [_COMPARE_OP_INT_r21] = _COMPARE_OP_INT, + [_COMPARE_OP_INT_r23] = _COMPARE_OP_INT, [_COMPARE_OP_STR_r21] = _COMPARE_OP_STR, [_IS_OP_r21] = _IS_OP, [_CONTAINS_OP_r21] = _CONTAINS_OP, @@ -3940,20 +3896,13 @@ const char *const _PyOpcode_uop_name[MAX_UOP_REGS_ID+1] = { [_BINARY_OP] = "_BINARY_OP", [_BINARY_OP_r21] = "_BINARY_OP_r21", [_BINARY_OP_ADD_FLOAT] = "_BINARY_OP_ADD_FLOAT", - [_BINARY_OP_ADD_FLOAT_r01] = "_BINARY_OP_ADD_FLOAT_r01", - [_BINARY_OP_ADD_FLOAT_r11] = "_BINARY_OP_ADD_FLOAT_r11", - [_BINARY_OP_ADD_FLOAT_r21] = "_BINARY_OP_ADD_FLOAT_r21", - [_BINARY_OP_ADD_FLOAT_r32] = "_BINARY_OP_ADD_FLOAT_r32", - [_BINARY_OP_ADD_FLOAT__NO_DECREF_INPUTS] = "_BINARY_OP_ADD_FLOAT__NO_DECREF_INPUTS", - [_BINARY_OP_ADD_FLOAT__NO_DECREF_INPUTS_r01] = "_BINARY_OP_ADD_FLOAT__NO_DECREF_INPUTS_r01", - [_BINARY_OP_ADD_FLOAT__NO_DECREF_INPUTS_r11] = "_BINARY_OP_ADD_FLOAT__NO_DECREF_INPUTS_r11", - [_BINARY_OP_ADD_FLOAT__NO_DECREF_INPUTS_r21] = "_BINARY_OP_ADD_FLOAT__NO_DECREF_INPUTS_r21", - [_BINARY_OP_ADD_FLOAT__NO_DECREF_INPUTS_r32] = "_BINARY_OP_ADD_FLOAT__NO_DECREF_INPUTS_r32", + [_BINARY_OP_ADD_FLOAT_r03] = "_BINARY_OP_ADD_FLOAT_r03", + [_BINARY_OP_ADD_FLOAT_r13] = "_BINARY_OP_ADD_FLOAT_r13", + [_BINARY_OP_ADD_FLOAT_r23] = "_BINARY_OP_ADD_FLOAT_r23", [_BINARY_OP_ADD_INT] = "_BINARY_OP_ADD_INT", - [_BINARY_OP_ADD_INT_r01] = "_BINARY_OP_ADD_INT_r01", - [_BINARY_OP_ADD_INT_r11] = "_BINARY_OP_ADD_INT_r11", - [_BINARY_OP_ADD_INT_r21] = "_BINARY_OP_ADD_INT_r21", - [_BINARY_OP_ADD_INT_r32] = "_BINARY_OP_ADD_INT_r32", + [_BINARY_OP_ADD_INT_r03] = "_BINARY_OP_ADD_INT_r03", + [_BINARY_OP_ADD_INT_r13] = "_BINARY_OP_ADD_INT_r13", + [_BINARY_OP_ADD_INT_r23] = "_BINARY_OP_ADD_INT_r23", [_BINARY_OP_ADD_UNICODE] = "_BINARY_OP_ADD_UNICODE", [_BINARY_OP_ADD_UNICODE_r01] = "_BINARY_OP_ADD_UNICODE_r01", [_BINARY_OP_ADD_UNICODE_r11] = "_BINARY_OP_ADD_UNICODE_r11", @@ -3964,20 +3913,13 @@ const char *const _PyOpcode_uop_name[MAX_UOP_REGS_ID+1] = { [_BINARY_OP_INPLACE_ADD_UNICODE] = "_BINARY_OP_INPLACE_ADD_UNICODE", [_BINARY_OP_INPLACE_ADD_UNICODE_r20] = "_BINARY_OP_INPLACE_ADD_UNICODE_r20", [_BINARY_OP_MULTIPLY_FLOAT] = "_BINARY_OP_MULTIPLY_FLOAT", - [_BINARY_OP_MULTIPLY_FLOAT_r01] = "_BINARY_OP_MULTIPLY_FLOAT_r01", - [_BINARY_OP_MULTIPLY_FLOAT_r11] = "_BINARY_OP_MULTIPLY_FLOAT_r11", - [_BINARY_OP_MULTIPLY_FLOAT_r21] = "_BINARY_OP_MULTIPLY_FLOAT_r21", - [_BINARY_OP_MULTIPLY_FLOAT_r32] = "_BINARY_OP_MULTIPLY_FLOAT_r32", - [_BINARY_OP_MULTIPLY_FLOAT__NO_DECREF_INPUTS] = "_BINARY_OP_MULTIPLY_FLOAT__NO_DECREF_INPUTS", - [_BINARY_OP_MULTIPLY_FLOAT__NO_DECREF_INPUTS_r01] = "_BINARY_OP_MULTIPLY_FLOAT__NO_DECREF_INPUTS_r01", - [_BINARY_OP_MULTIPLY_FLOAT__NO_DECREF_INPUTS_r11] = "_BINARY_OP_MULTIPLY_FLOAT__NO_DECREF_INPUTS_r11", - [_BINARY_OP_MULTIPLY_FLOAT__NO_DECREF_INPUTS_r21] = "_BINARY_OP_MULTIPLY_FLOAT__NO_DECREF_INPUTS_r21", - [_BINARY_OP_MULTIPLY_FLOAT__NO_DECREF_INPUTS_r32] = "_BINARY_OP_MULTIPLY_FLOAT__NO_DECREF_INPUTS_r32", + [_BINARY_OP_MULTIPLY_FLOAT_r03] = "_BINARY_OP_MULTIPLY_FLOAT_r03", + [_BINARY_OP_MULTIPLY_FLOAT_r13] = "_BINARY_OP_MULTIPLY_FLOAT_r13", + [_BINARY_OP_MULTIPLY_FLOAT_r23] = "_BINARY_OP_MULTIPLY_FLOAT_r23", [_BINARY_OP_MULTIPLY_INT] = "_BINARY_OP_MULTIPLY_INT", - [_BINARY_OP_MULTIPLY_INT_r01] = "_BINARY_OP_MULTIPLY_INT_r01", - [_BINARY_OP_MULTIPLY_INT_r11] = "_BINARY_OP_MULTIPLY_INT_r11", - [_BINARY_OP_MULTIPLY_INT_r21] = "_BINARY_OP_MULTIPLY_INT_r21", - [_BINARY_OP_MULTIPLY_INT_r32] = "_BINARY_OP_MULTIPLY_INT_r32", + [_BINARY_OP_MULTIPLY_INT_r03] = "_BINARY_OP_MULTIPLY_INT_r03", + [_BINARY_OP_MULTIPLY_INT_r13] = "_BINARY_OP_MULTIPLY_INT_r13", + [_BINARY_OP_MULTIPLY_INT_r23] = "_BINARY_OP_MULTIPLY_INT_r23", [_BINARY_OP_SUBSCR_CHECK_FUNC] = "_BINARY_OP_SUBSCR_CHECK_FUNC", [_BINARY_OP_SUBSCR_CHECK_FUNC_r23] = "_BINARY_OP_SUBSCR_CHECK_FUNC_r23", [_BINARY_OP_SUBSCR_DICT] = "_BINARY_OP_SUBSCR_DICT", @@ -3996,20 +3938,13 @@ const char *const _PyOpcode_uop_name[MAX_UOP_REGS_ID+1] = { [_BINARY_OP_SUBSCR_TUPLE_INT] = "_BINARY_OP_SUBSCR_TUPLE_INT", [_BINARY_OP_SUBSCR_TUPLE_INT_r21] = "_BINARY_OP_SUBSCR_TUPLE_INT_r21", [_BINARY_OP_SUBTRACT_FLOAT] = "_BINARY_OP_SUBTRACT_FLOAT", - [_BINARY_OP_SUBTRACT_FLOAT_r01] = "_BINARY_OP_SUBTRACT_FLOAT_r01", - [_BINARY_OP_SUBTRACT_FLOAT_r11] = "_BINARY_OP_SUBTRACT_FLOAT_r11", - [_BINARY_OP_SUBTRACT_FLOAT_r21] = "_BINARY_OP_SUBTRACT_FLOAT_r21", - [_BINARY_OP_SUBTRACT_FLOAT_r32] = "_BINARY_OP_SUBTRACT_FLOAT_r32", - [_BINARY_OP_SUBTRACT_FLOAT__NO_DECREF_INPUTS] = "_BINARY_OP_SUBTRACT_FLOAT__NO_DECREF_INPUTS", - [_BINARY_OP_SUBTRACT_FLOAT__NO_DECREF_INPUTS_r01] = "_BINARY_OP_SUBTRACT_FLOAT__NO_DECREF_INPUTS_r01", - [_BINARY_OP_SUBTRACT_FLOAT__NO_DECREF_INPUTS_r11] = "_BINARY_OP_SUBTRACT_FLOAT__NO_DECREF_INPUTS_r11", - [_BINARY_OP_SUBTRACT_FLOAT__NO_DECREF_INPUTS_r21] = "_BINARY_OP_SUBTRACT_FLOAT__NO_DECREF_INPUTS_r21", - [_BINARY_OP_SUBTRACT_FLOAT__NO_DECREF_INPUTS_r32] = "_BINARY_OP_SUBTRACT_FLOAT__NO_DECREF_INPUTS_r32", + [_BINARY_OP_SUBTRACT_FLOAT_r03] = "_BINARY_OP_SUBTRACT_FLOAT_r03", + [_BINARY_OP_SUBTRACT_FLOAT_r13] = "_BINARY_OP_SUBTRACT_FLOAT_r13", + [_BINARY_OP_SUBTRACT_FLOAT_r23] = "_BINARY_OP_SUBTRACT_FLOAT_r23", [_BINARY_OP_SUBTRACT_INT] = "_BINARY_OP_SUBTRACT_INT", - [_BINARY_OP_SUBTRACT_INT_r01] = "_BINARY_OP_SUBTRACT_INT_r01", - [_BINARY_OP_SUBTRACT_INT_r11] = "_BINARY_OP_SUBTRACT_INT_r11", - [_BINARY_OP_SUBTRACT_INT_r21] = "_BINARY_OP_SUBTRACT_INT_r21", - [_BINARY_OP_SUBTRACT_INT_r32] = "_BINARY_OP_SUBTRACT_INT_r32", + [_BINARY_OP_SUBTRACT_INT_r03] = "_BINARY_OP_SUBTRACT_INT_r03", + [_BINARY_OP_SUBTRACT_INT_r13] = "_BINARY_OP_SUBTRACT_INT_r13", + [_BINARY_OP_SUBTRACT_INT_r23] = "_BINARY_OP_SUBTRACT_INT_r23", [_BINARY_SLICE] = "_BINARY_SLICE", [_BINARY_SLICE_r31] = "_BINARY_SLICE_r31", [_BUILD_INTERPOLATION] = "_BUILD_INTERPOLATION", @@ -4147,7 +4082,7 @@ const char *const _PyOpcode_uop_name[MAX_UOP_REGS_ID+1] = { [_COMPARE_OP_FLOAT_r21] = "_COMPARE_OP_FLOAT_r21", [_COMPARE_OP_FLOAT_r32] = "_COMPARE_OP_FLOAT_r32", [_COMPARE_OP_INT] = "_COMPARE_OP_INT", - [_COMPARE_OP_INT_r21] = "_COMPARE_OP_INT_r21", + [_COMPARE_OP_INT_r23] = "_COMPARE_OP_INT_r23", [_COMPARE_OP_STR] = "_COMPARE_OP_STR", [_COMPARE_OP_STR_r21] = "_COMPARE_OP_STR_r21", [_CONTAINS_OP] = "_CONTAINS_OP", @@ -4653,6 +4588,8 @@ const char *const _PyOpcode_uop_name[MAX_UOP_REGS_ID+1] = { [_LOAD_FAST_BORROW_7_r23] = "_LOAD_FAST_BORROW_7_r23", [_LOAD_FAST_CHECK] = "_LOAD_FAST_CHECK", [_LOAD_FAST_CHECK_r01] = "_LOAD_FAST_CHECK_r01", + [_LOAD_FAST_CHECK_r12] = "_LOAD_FAST_CHECK_r12", + [_LOAD_FAST_CHECK_r23] = "_LOAD_FAST_CHECK_r23", [_LOAD_FROM_DICT_OR_DEREF] = "_LOAD_FROM_DICT_OR_DEREF", [_LOAD_FROM_DICT_OR_DEREF_r11] = "_LOAD_FROM_DICT_OR_DEREF_r11", [_LOAD_GLOBAL] = "_LOAD_GLOBAL", @@ -4663,6 +4600,8 @@ const char *const _PyOpcode_uop_name[MAX_UOP_REGS_ID+1] = { [_LOAD_GLOBAL_MODULE_r01] = "_LOAD_GLOBAL_MODULE_r01", [_LOAD_LOCALS] = "_LOAD_LOCALS", [_LOAD_LOCALS_r01] = "_LOAD_LOCALS_r01", + [_LOAD_LOCALS_r12] = "_LOAD_LOCALS_r12", + [_LOAD_LOCALS_r23] = "_LOAD_LOCALS_r23", [_LOAD_NAME] = "_LOAD_NAME", [_LOAD_NAME_r01] = "_LOAD_NAME_r01", [_LOAD_SMALL_INT] = "_LOAD_SMALL_INT", @@ -4839,9 +4778,9 @@ const char *const _PyOpcode_uop_name[MAX_UOP_REGS_ID+1] = { [_STORE_ATTR] = "_STORE_ATTR", [_STORE_ATTR_r20] = "_STORE_ATTR_r20", [_STORE_ATTR_INSTANCE_VALUE] = "_STORE_ATTR_INSTANCE_VALUE", - [_STORE_ATTR_INSTANCE_VALUE_r20] = "_STORE_ATTR_INSTANCE_VALUE_r20", + [_STORE_ATTR_INSTANCE_VALUE_r21] = "_STORE_ATTR_INSTANCE_VALUE_r21", [_STORE_ATTR_SLOT] = "_STORE_ATTR_SLOT", - [_STORE_ATTR_SLOT_r20] = "_STORE_ATTR_SLOT_r20", + [_STORE_ATTR_SLOT_r21] = "_STORE_ATTR_SLOT_r21", [_STORE_ATTR_WITH_HINT] = "_STORE_ATTR_WITH_HINT", [_STORE_ATTR_WITH_HINT_r20] = "_STORE_ATTR_WITH_HINT_r20", [_STORE_DEREF] = "_STORE_DEREF", @@ -5090,12 +5029,6 @@ int _PyUop_num_popped(int opcode, int oparg) return 2; case _BINARY_OP_SUBTRACT_FLOAT: return 2; - case _BINARY_OP_MULTIPLY_FLOAT__NO_DECREF_INPUTS: - return 2; - case _BINARY_OP_ADD_FLOAT__NO_DECREF_INPUTS: - return 2; - case _BINARY_OP_SUBTRACT_FLOAT__NO_DECREF_INPUTS: - return 2; case _BINARY_OP_ADD_UNICODE: return 2; case _BINARY_OP_INPLACE_ADD_UNICODE: diff --git a/Lib/importlib/_bootstrap_external.py b/Lib/importlib/_bootstrap_external.py index a3089de4705f73..b576ceb1ce9f6e 100644 --- a/Lib/importlib/_bootstrap_external.py +++ b/Lib/importlib/_bootstrap_external.py @@ -967,19 +967,6 @@ def set_data(self, path, data, *, _mode=0o666): _bootstrap._verbose_message('could not create {!r}: {!r}', parent, exc) return - - if part == _PYCACHE: - gitignore = _path_join(parent, '.gitignore') - try: - _path_stat(gitignore) - except FileNotFoundError: - gitignore_content = b'# Created by CPython\n*\n' - try: - _write_atomic(gitignore, gitignore_content, _mode) - except OSError: - pass - except OSError: - pass try: _write_atomic(path, data, _mode) _bootstrap._verbose_message('created {!r}', path) diff --git a/Lib/py_compile.py b/Lib/py_compile.py index b8324e7256a566..43d8ec90ffb6b1 100644 --- a/Lib/py_compile.py +++ b/Lib/py_compile.py @@ -155,14 +155,6 @@ def compile(file, cfile=None, dfile=None, doraise=False, optimize=-1, dirname = os.path.dirname(cfile) if dirname: os.makedirs(dirname) - if os.path.basename(dirname) == '__pycache__': - gitignore = os.path.join(dirname, '.gitignore') - if not os.path.exists(gitignore): - try: - with open(gitignore, 'wb') as f: - f.write(b'# Created by CPython\n*\n') - except OSError: - pass except FileExistsError: pass if invalidation_mode == PycInvalidationMode.TIMESTAMP: diff --git a/Lib/test/test_capi/test_opt.py b/Lib/test/test_capi/test_opt.py index e17367ca71ea38..0fa74b9e8fae27 100644 --- a/Lib/test/test_capi/test_opt.py +++ b/Lib/test/test_capi/test_opt.py @@ -666,7 +666,7 @@ def testfunc(n): self.assertLessEqual(len(guard_nos_float_count), 1) # TODO gh-115506: this assertion may change after propagating constants. # We'll also need to verify that propagation actually occurs. - self.assertIn("_BINARY_OP_ADD_FLOAT__NO_DECREF_INPUTS", uops) + self.assertIn("_POP_TOP_NOP", uops) def test_float_subtract_constant_propagation(self): def testfunc(n): @@ -688,7 +688,7 @@ def testfunc(n): self.assertLessEqual(len(guard_nos_float_count), 1) # TODO gh-115506: this assertion may change after propagating constants. # We'll also need to verify that propagation actually occurs. - self.assertIn("_BINARY_OP_SUBTRACT_FLOAT__NO_DECREF_INPUTS", uops) + self.assertIn("_POP_TOP_NOP", uops) def test_float_multiply_constant_propagation(self): def testfunc(n): @@ -710,7 +710,7 @@ def testfunc(n): self.assertLessEqual(len(guard_nos_float_count), 1) # TODO gh-115506: this assertion may change after propagating constants. # We'll also need to verify that propagation actually occurs. - self.assertIn("_BINARY_OP_MULTIPLY_FLOAT__NO_DECREF_INPUTS", uops) + self.assertIn("_POP_TOP_NOP", uops) def test_add_unicode_propagation(self): def testfunc(n): @@ -1426,8 +1426,9 @@ def testfunc(n): self.assertEqual(res, 3) self.assertIsNotNone(ex) uops = get_opnames(ex) - self.assertNotIn("_BINARY_OP_ADD_INT", uops) - self.assertNotIn("_POP_TWO_LOAD_CONST_INLINE_BORROW", uops) + # TODO (gh-142764): Re-enable after we get back automatic constant propagation. + # self.assertNotIn("_BINARY_OP_ADD_INT", uops) + # self.assertNotIn("_POP_TWO_LOAD_CONST_INLINE_BORROW", uops) self.assertNotIn("_GUARD_NOS_INT", uops) self.assertNotIn("_GUARD_TOS_INT", uops) @@ -1645,6 +1646,7 @@ def testfunc(n): self.assertNotIn("_COMPARE_OP", uops) self.assertNotIn("_POP_TWO_LOAD_CONST_INLINE_BORROW", uops) + @unittest.skip("TODO (gh-142764): Re-enable after we get back automatic constant propagation.") def test_compare_op_int_pop_two_load_const_inline_borrow(self): def testfunc(n): x = 0 @@ -2064,8 +2066,9 @@ def testfunc(n): uops = get_opnames(ex) self.assertIn("_CALL_TUPLE_1", uops) self.assertIn("_UNPACK_SEQUENCE_TWO_TUPLE", uops) - self.assertNotIn("_COMPARE_OP_INT", uops) - self.assertNotIn("_GUARD_IS_TRUE_POP", uops) + # TODO (gh-142764): Re-enable after we get back automatic constant propagation. + # self.assertNotIn("_COMPARE_OP_INT", uops) + # self.assertNotIn("_GUARD_IS_TRUE_POP", uops) def test_call_len(self): def testfunc(n): @@ -2130,8 +2133,9 @@ class C: # length allows us to optimize more code, such as conditionals # in this case self.assertIn("_CALL_LEN", uops) - self.assertNotIn("_COMPARE_OP_INT", uops) - self.assertNotIn("_GUARD_IS_TRUE_POP", uops) + # TODO (gh-142764): Re-enable after we get back automatic constant propagation. + # self.assertNotIn("_COMPARE_OP_INT", uops) + # self.assertNotIn("_GUARD_IS_TRUE_POP", uops) def test_call_builtin_o(self): def testfunc(n): @@ -2206,8 +2210,9 @@ def testfunc(n): self.assertIsNotNone(ex) uops = get_opnames(ex) self.assertIn("_BINARY_OP_SUBSCR_TUPLE_INT", uops) - self.assertNotIn("_COMPARE_OP_INT", uops) - self.assertNotIn("_GUARD_IS_TRUE_POP", uops) + # TODO (gh-142764): Re-enable after we get back automatic constant propagation. + # self.assertNotIn("_COMPARE_OP_INT", uops) + # self.assertNotIn("_GUARD_IS_TRUE_POP", uops) def test_call_isinstance_guards_removed(self): def testfunc(n): @@ -2466,7 +2471,67 @@ def testfunc(args): self.assertAlmostEqual(res, TIER2_THRESHOLD * (0.1 + 0.1)) self.assertIsNotNone(ex) uops = get_opnames(ex) - self.assertIn("_BINARY_OP_ADD_FLOAT__NO_DECREF_INPUTS", uops) + self.assertIn("_POP_TOP_NOP", uops) + + def test_int_add_op_refcount_elimination(self): + def testfunc(n): + c = 1 + res = 0 + for _ in range(n): + res = c + c + return res + + res, ex = self._run_with_optimizer(testfunc, TIER2_THRESHOLD) + self.assertIsNotNone(ex) + uops = get_opnames(ex) + self.assertIn("_BINARY_OP_ADD_INT", uops) + self.assertIn("_POP_TOP_NOP", uops) + self.assertNotIn("_POP_TOP", uops) + + def test_int_sub_op_refcount_elimination(self): + def testfunc(n): + c = 1 + res = 0 + for _ in range(n): + res = c - c + return res + + res, ex = self._run_with_optimizer(testfunc, TIER2_THRESHOLD) + self.assertIsNotNone(ex) + uops = get_opnames(ex) + self.assertIn("_BINARY_OP_SUBTRACT_INT", uops) + self.assertIn("_POP_TOP_NOP", uops) + self.assertNotIn("_POP_TOP", uops) + + def test_int_mul_op_refcount_elimination(self): + def testfunc(n): + c = 1 + res = 0 + for _ in range(n): + res = c * c + return res + + res, ex = self._run_with_optimizer(testfunc, TIER2_THRESHOLD) + self.assertIsNotNone(ex) + uops = get_opnames(ex) + self.assertIn("_BINARY_OP_MULTIPLY_INT", uops) + self.assertIn("_POP_TOP_NOP", uops) + self.assertNotIn("_POP_TOP", uops) + + def test_int_cmp_op_refcount_elimination(self): + def testfunc(n): + c = 1 + res = 0 + for _ in range(n): + res = c == c + return res + + res, ex = self._run_with_optimizer(testfunc, TIER2_THRESHOLD) + self.assertIsNotNone(ex) + uops = get_opnames(ex) + self.assertIn("_COMPARE_OP_INT", uops) + self.assertIn("_POP_TOP_NOP", uops) + self.assertNotIn("_POP_TOP", uops) def test_remove_guard_for_slice_list(self): def f(n): @@ -2511,6 +2576,23 @@ def testfunc(n): self.assertNotIn("_GUARD_TOS_INT", uops) self.assertNotIn("_GUARD_NOS_INT", uops) + def test_store_attr_instance_value(self): + def testfunc(n): + class C: + pass + c = C() + for i in range(n): + c.a = i + return c.a + res, ex = self._run_with_optimizer(testfunc, TIER2_THRESHOLD) + self.assertEqual(res, TIER2_THRESHOLD - 1) + self.assertIsNotNone(ex) + uops = get_opnames(ex) + + self.assertIn("_STORE_ATTR_INSTANCE_VALUE", uops) + self.assertNotIn("_POP_TOP", uops) + self.assertIn("_POP_TOP_NOP", uops) + def test_store_subscr_int(self): def testfunc(n): l = [0, 0, 0, 0] @@ -2530,7 +2612,25 @@ def testfunc(n): self.assertNotIn("_POP_TOP_INT", uops) self.assertIn("_POP_TOP_NOP", uops) - def test_store_susbscr_dict(self): + def test_store_attr_slot(self): + class C: + __slots__ = ('x',) + + def testfunc(n): + c = C() + for _ in range(n): + c.x = 42 + y = c.x + return y + + res, ex = self._run_with_optimizer(testfunc, TIER2_THRESHOLD) + self.assertEqual(res, 42) + self.assertIsNotNone(ex) + uops = get_opnames(ex) + self.assertIn("_STORE_ATTR_SLOT", uops) + self.assertIn("_POP_TOP_NOP", uops) + + def test_store_subscr_dict(self): def testfunc(n): d = {} for _ in range(n): @@ -2812,6 +2912,28 @@ def write(id0): pool.submit(write, (1,)) """)) + def test_handling_of_tos_cache_with_side_exits(self): + # https://github.com/python/cpython/issues/142718 + class EvilAttr: + def __init__(self, d): + self.d = d + + def __del__(self): + try: + del self.d['attr'] + except Exception: + pass + + class Obj: + pass + + obj = Obj() + obj.__dict__ = {} + + for _ in range(TIER2_THRESHOLD+1): + obj.attr = EvilAttr(obj.__dict__) + + def global_identity(x): return x diff --git a/Lib/test/test_compileall.py b/Lib/test/test_compileall.py index c7c44299c5a829..8384c183dd92dd 100644 --- a/Lib/test/test_compileall.py +++ b/Lib/test/test_compileall.py @@ -625,10 +625,8 @@ def f(self, ext=ext, switch=switch): ['-m', 'compileall', '-q', self.pkgdir])) # Verify the __pycache__ directory contents. self.assertTrue(os.path.exists(self.pkgdir_cachedir)) - expected = ['.gitignore'] + sorted( - base.format(sys.implementation.cache_tag, ext) - for base in ('__init__.{}.{}', 'bar.{}.{}') - ) + expected = sorted(base.format(sys.implementation.cache_tag, ext) + for base in ('__init__.{}.{}', 'bar.{}.{}')) self.assertEqual(sorted(os.listdir(self.pkgdir_cachedir)), expected) # Make sure there are no .pyc files in the source directory. self.assertFalse([fn for fn in os.listdir(self.pkgdir) diff --git a/Lib/test/test_free_threading/test_bz2.py b/Lib/test/test_free_threading/test_bz2.py index 0e09c64d5610a3..3bb531ec04c6c9 100644 --- a/Lib/test/test_free_threading/test_bz2.py +++ b/Lib/test/test_free_threading/test_bz2.py @@ -42,11 +42,22 @@ def worker(): data = bz2d.decompress(compressed, chunk_size) self.assertEqual(len(data), chunk_size) output.append(data) + # Read attributes concurrently with other threads decompressing + self.assertIsInstance(bz2d.eof, bool) + self.assertIsInstance(bz2d.needs_input, bool) + self.assertIsInstance(bz2d.unused_data, bytes) run_concurrently(worker_func=worker, nthreads=NTHREADS) self.assertEqual(len(output), NTHREADS) # Verify the expected chunks (order doesn't matter due to append race) self.assertEqual(set(output), set(chunks)) + self.assertTrue(bz2d.eof) + self.assertFalse(bz2d.needs_input) + # Each thread added full compressed data to the buffer, but only 1 copy + # is consumed to produce the output. The rest remains as unused_data. + self.assertEqual( + len(bz2d.unused_data), len(compressed) * (NTHREADS - 1) + ) if __name__ == "__main__": diff --git a/Lib/test/test_importlib/source/test_file_loader.py b/Lib/test/test_importlib/source/test_file_loader.py index 5e88f0dbed081e..5d5d4722171a8e 100644 --- a/Lib/test/test_importlib/source/test_file_loader.py +++ b/Lib/test/test_importlib/source/test_file_loader.py @@ -180,21 +180,6 @@ def test_overridden_unchecked_hash_based_pyc(self): data[8:16], ) - @util.writes_bytecode_files - def test_gitignore_in_pycache(self): - with util.create_modules('_temp') as mapping: - source = mapping['_temp'] - loader = self.machinery.SourceFileLoader('_temp', source) - mod = types.ModuleType('_temp') - mod.__spec__ = self.util.spec_from_loader('_temp', loader) - loader.exec_module(mod) - pyc = os.path.dirname(self.util.cache_from_source(source)) - gitignore = os.path.join(pyc, '.gitignore') - self.assertTrue(os.path.exists(gitignore)) - with open(gitignore, 'rb') as f: - t = f.read() - self.assertEqual(t, b'# Created by CPython\n*\n') - (Frozen_SimpleTest, Source_SimpleTest diff --git a/Lib/test/test_py_compile.py b/Lib/test/test_py_compile.py index fdfb124c051884..64387296e84621 100644 --- a/Lib/test/test_py_compile.py +++ b/Lib/test/test_py_compile.py @@ -207,16 +207,6 @@ def test_quiet(self): with self.assertRaises(py_compile.PyCompileError): py_compile.compile(bad_coding, doraise=True, quiet=1) - def test_gitignore_created(self): - py_compile.compile(self.source_path) - self.assertTrue(os.path.exists(self.cache_path)) - pyc = os.path.dirname(self.cache_path) - gitignore = os.path.join(pyc, '.gitignore') - self.assertTrue(os.path.exists(gitignore)) - with open(gitignore, 'rb') as f: - text = f.read() - self.assertEqual(text, b'# Created by CPython\n*\n') - class PyCompileTestsWithSourceEpoch(PyCompileTestsBase, unittest.TestCase, diff --git a/Lib/test/test_traceback.py b/Lib/test/test_traceback.py index 259f70f1ea0dbc..96510eeec54640 100644 --- a/Lib/test/test_traceback.py +++ b/Lib/test/test_traceback.py @@ -18,7 +18,7 @@ from test.support import (Error, captured_output, cpython_only, ALWAYS_EQ, requires_debug_ranges, has_no_debug_ranges, requires_subprocess) -from test.support.os_helper import TESTFN, unlink +from test.support.os_helper import TESTFN, temp_dir, unlink from test.support.script_helper import assert_python_ok, assert_python_failure, make_script from test.support.import_helper import forget from test.support import force_not_colorized, force_not_colorized_test_class @@ -524,6 +524,33 @@ def __del__(self): b'ZeroDivisionError: division by zero'] self.assertEqual(stderr.splitlines(), expected) + @cpython_only + def test_lost_io_open(self): + # GH-142737: Display the traceback even if io.open is lost + crasher = textwrap.dedent("""\ + import io + import traceback + # Trigger fallback mode + traceback._print_exception_bltin = None + del io.open + raise RuntimeError("should not crash") + """) + + # Create a temporary script to exercise _Py_FindSourceFile + with temp_dir() as script_dir: + script = make_script( + script_dir=script_dir, + script_basename='tb_test_no_io_open', + source=crasher) + rc, stdout, stderr = assert_python_failure(script) + + self.assertEqual(rc, 1) # Make sure it's not a crash + + expected = [b'Traceback (most recent call last):', + f' File "{script}", line 6, in '.encode(), + b'RuntimeError: should not crash'] + self.assertEqual(stderr.splitlines(), expected) + def test_print_exception(self): output = StringIO() traceback.print_exception( diff --git a/Misc/NEWS.d/next/Core_and_Builtins/2025-12-15-03-20-24.gh-issue-116738.NNHiTK.rst b/Misc/NEWS.d/next/Core_and_Builtins/2025-12-15-03-20-24.gh-issue-116738.NNHiTK.rst new file mode 100644 index 00000000000000..bf06dfee23291e --- /dev/null +++ b/Misc/NEWS.d/next/Core_and_Builtins/2025-12-15-03-20-24.gh-issue-116738.NNHiTK.rst @@ -0,0 +1,2 @@ +Make the attributes in :mod:`bz2` thread-safe on the :term:`free threaded +` build. diff --git a/Misc/NEWS.d/next/Core_and_Builtins/2025-12-15-15-01-21.gh-issue-142737.xYXzeB.rst b/Misc/NEWS.d/next/Core_and_Builtins/2025-12-15-15-01-21.gh-issue-142737.xYXzeB.rst new file mode 100644 index 00000000000000..8b743d1e49de21 --- /dev/null +++ b/Misc/NEWS.d/next/Core_and_Builtins/2025-12-15-15-01-21.gh-issue-142737.xYXzeB.rst @@ -0,0 +1,3 @@ +Tracebacks will be displayed in fallback mode even if :func:`io.open` is lost. +Previously, this would crash the interpreter. +Patch by Bartosz Sławecki. diff --git a/Misc/NEWS.d/next/Core_and_Builtins/2025-12-15-15-07-40.gh-issue-142718.zjiGjS.rst b/Misc/NEWS.d/next/Core_and_Builtins/2025-12-15-15-07-40.gh-issue-142718.zjiGjS.rst new file mode 100644 index 00000000000000..022707fe33e8d5 --- /dev/null +++ b/Misc/NEWS.d/next/Core_and_Builtins/2025-12-15-15-07-40.gh-issue-142718.zjiGjS.rst @@ -0,0 +1 @@ +JIT: Fix segfault caused by not flushing the stack to memory at side exits. diff --git a/Misc/NEWS.d/next/Core_and_Builtins/2025-12-16-01-17-21.gh-issue-134584.tsxYYw.rst b/Misc/NEWS.d/next/Core_and_Builtins/2025-12-16-01-17-21.gh-issue-134584.tsxYYw.rst new file mode 100644 index 00000000000000..66bafbfc734bb1 --- /dev/null +++ b/Misc/NEWS.d/next/Core_and_Builtins/2025-12-16-01-17-21.gh-issue-134584.tsxYYw.rst @@ -0,0 +1 @@ +Eliminate redundant refcounting from ``_STORE_ATTR_INSTANCE_VALUE``. diff --git a/Misc/NEWS.d/next/Library/2025-11-06-17-37-51.gh-issue-141081.NJtULs.rst b/Misc/NEWS.d/next/Library/2025-11-06-17-37-51.gh-issue-141081.NJtULs.rst deleted file mode 100644 index 2b64f68f4dfd28..00000000000000 --- a/Misc/NEWS.d/next/Library/2025-11-06-17-37-51.gh-issue-141081.NJtULs.rst +++ /dev/null @@ -1,2 +0,0 @@ -When ``__pycache__`` directories are created, they now contain a -``.gitignore`` file that ignores their contents. diff --git a/Modules/_bz2module.c b/Modules/_bz2module.c index 452b88dfed29ce..f3457a13c96c1f 100644 --- a/Modules/_bz2module.c +++ b/Modules/_bz2module.c @@ -12,6 +12,7 @@ // Blocks output buffer wrappers #include "pycore_blocks_output_buffer.h" +#include "pycore_pyatomic_ft_wrappers.h" // FT_ATOMIC_STORE_CHAR_RELAXED #if OUTPUT_BUFFER_MAX_BLOCK_SIZE > UINT32_MAX #error "The maximum block size accepted by libbzip2 is UINT32_MAX." @@ -437,7 +438,7 @@ decompress_buf(BZ2Decompressor *d, Py_ssize_t max_length) if (catch_bz2_error(bzret)) goto error; if (bzret == BZ_STREAM_END) { - d->eof = 1; + FT_ATOMIC_STORE_CHAR_RELAXED(d->eof, 1); break; } else if (d->bzs_avail_in_real == 0) { break; @@ -521,7 +522,7 @@ decompress(BZ2Decompressor *d, char *data, size_t len, Py_ssize_t max_length) } if (d->eof) { - d->needs_input = 0; + FT_ATOMIC_STORE_CHAR_RELAXED(d->needs_input, 0); if (d->bzs_avail_in_real > 0) { Py_XSETREF(d->unused_data, PyBytes_FromStringAndSize(bzs->next_in, d->bzs_avail_in_real)); @@ -531,10 +532,10 @@ decompress(BZ2Decompressor *d, char *data, size_t len, Py_ssize_t max_length) } else if (d->bzs_avail_in_real == 0) { bzs->next_in = NULL; - d->needs_input = 1; + FT_ATOMIC_STORE_CHAR_RELAXED(d->needs_input, 1); } else { - d->needs_input = 0; + FT_ATOMIC_STORE_CHAR_RELAXED(d->needs_input, 0); /* If we did not use the input buffer, we now have to copy the tail from the caller's buffer into the @@ -682,11 +683,28 @@ PyDoc_STRVAR(BZ2Decompressor_unused_data__doc__, PyDoc_STRVAR(BZ2Decompressor_needs_input_doc, "True if more input is needed before more decompressed data can be produced."); +static PyObject * +BZ2Decompressor_unused_data_get(PyObject *op, void *Py_UNUSED(ignored)) +{ + BZ2Decompressor *self = _BZ2Decompressor_CAST(op); + PyMutex_Lock(&self->mutex); + PyObject *result = Py_XNewRef(self->unused_data); + PyMutex_Unlock(&self->mutex); + if (result == NULL) { + PyErr_SetString(PyExc_AttributeError, "unused_data"); + } + return result; +} + +static PyGetSetDef BZ2Decompressor_getset[] = { + {"unused_data", BZ2Decompressor_unused_data_get, NULL, + BZ2Decompressor_unused_data__doc__}, + {NULL}, +}; + static PyMemberDef BZ2Decompressor_members[] = { {"eof", Py_T_BOOL, offsetof(BZ2Decompressor, eof), Py_READONLY, BZ2Decompressor_eof__doc__}, - {"unused_data", Py_T_OBJECT_EX, offsetof(BZ2Decompressor, unused_data), - Py_READONLY, BZ2Decompressor_unused_data__doc__}, {"needs_input", Py_T_BOOL, offsetof(BZ2Decompressor, needs_input), Py_READONLY, BZ2Decompressor_needs_input_doc}, {NULL} @@ -697,6 +715,7 @@ static PyType_Slot bz2_decompressor_type_slots[] = { {Py_tp_methods, BZ2Decompressor_methods}, {Py_tp_doc, (char *)_bz2_BZ2Decompressor__doc__}, {Py_tp_members, BZ2Decompressor_members}, + {Py_tp_getset, BZ2Decompressor_getset}, {Py_tp_new, _bz2_BZ2Decompressor}, {0, 0} }; diff --git a/Objects/call.c b/Objects/call.c index 41d075caf11ce6..af42fc8f7f2dbf 100644 --- a/Objects/call.c +++ b/Objects/call.c @@ -729,6 +729,7 @@ _Py_COMP_DIAG_POP PyObject * _PyObject_CallMethodFormat(PyThreadState *tstate, PyObject *callable, const char *format, ...) { + assert(callable != NULL); va_list va; va_start(va, format); PyObject *retval = callmethod(tstate, callable, format, va); diff --git a/Objects/floatobject.c b/Objects/floatobject.c index 78006783c6ec78..2cb690748d9de4 100644 --- a/Objects/floatobject.c +++ b/Objects/floatobject.c @@ -135,13 +135,6 @@ PyFloat_FromDouble(double fval) return (PyObject *) op; } -_PyStackRef _PyFloat_FromDouble_ConsumeInputs(_PyStackRef left, _PyStackRef right, double value) -{ - PyStackRef_CLOSE_SPECIALIZED(left, _PyFloat_ExactDealloc); - PyStackRef_CLOSE_SPECIALIZED(right, _PyFloat_ExactDealloc); - return PyStackRef_FromPyObjectSteal(PyFloat_FromDouble(value)); -} - static PyObject * float_from_string_inner(const char *s, Py_ssize_t len, void *obj) { diff --git a/Python/bytecodes.c b/Python/bytecodes.c index 3e6147961f1822..0dbfe962684e20 100644 --- a/Python/bytecodes.c +++ b/Python/bytecodes.c @@ -614,7 +614,7 @@ dummy_func( EXIT_IF(!_PyLong_IsCompact((PyLongObject *)value_o)); } - pure op(_BINARY_OP_MULTIPLY_INT, (left, right -- res)) { + pure op(_BINARY_OP_MULTIPLY_INT, (left, right -- res, l, r)) { PyObject *left_o = PyStackRef_AsPyObjectBorrow(left); PyObject *right_o = PyStackRef_AsPyObjectBorrow(right); assert(PyLong_CheckExact(left_o)); @@ -624,12 +624,12 @@ dummy_func( STAT_INC(BINARY_OP, hit); res = _PyCompactLong_Multiply((PyLongObject *)left_o, (PyLongObject *)right_o); EXIT_IF(PyStackRef_IsNull(res)); - PyStackRef_CLOSE_SPECIALIZED(right, _PyLong_ExactDealloc); - PyStackRef_CLOSE_SPECIALIZED(left, _PyLong_ExactDealloc); + l = left; + r = right; INPUTS_DEAD(); } - pure op(_BINARY_OP_ADD_INT, (left, right -- res)) { + pure op(_BINARY_OP_ADD_INT, (left, right -- res, l, r)) { PyObject *left_o = PyStackRef_AsPyObjectBorrow(left); PyObject *right_o = PyStackRef_AsPyObjectBorrow(right); assert(PyLong_CheckExact(left_o)); @@ -639,12 +639,12 @@ dummy_func( STAT_INC(BINARY_OP, hit); res = _PyCompactLong_Add((PyLongObject *)left_o, (PyLongObject *)right_o); EXIT_IF(PyStackRef_IsNull(res)); - PyStackRef_CLOSE_SPECIALIZED(right, _PyLong_ExactDealloc); - PyStackRef_CLOSE_SPECIALIZED(left, _PyLong_ExactDealloc); + l = left; + r = right; INPUTS_DEAD(); } - pure op(_BINARY_OP_SUBTRACT_INT, (left, right -- res)) { + pure op(_BINARY_OP_SUBTRACT_INT, (left, right -- res, l, r)) { PyObject *left_o = PyStackRef_AsPyObjectBorrow(left); PyObject *right_o = PyStackRef_AsPyObjectBorrow(right); assert(PyLong_CheckExact(left_o)); @@ -654,19 +654,19 @@ dummy_func( STAT_INC(BINARY_OP, hit); res = _PyCompactLong_Subtract((PyLongObject *)left_o, (PyLongObject *)right_o); EXIT_IF(PyStackRef_IsNull(res)); - PyStackRef_CLOSE_SPECIALIZED(right, _PyLong_ExactDealloc); - PyStackRef_CLOSE_SPECIALIZED(left, _PyLong_ExactDealloc); + l = left; + r = right; INPUTS_DEAD(); } macro(BINARY_OP_MULTIPLY_INT) = - _GUARD_TOS_INT + _GUARD_NOS_INT + unused/5 + _BINARY_OP_MULTIPLY_INT; + _GUARD_TOS_INT + _GUARD_NOS_INT + unused/5 + _BINARY_OP_MULTIPLY_INT + _POP_TOP_INT + _POP_TOP_INT; macro(BINARY_OP_ADD_INT) = - _GUARD_TOS_INT + _GUARD_NOS_INT + unused/5 + _BINARY_OP_ADD_INT; + _GUARD_TOS_INT + _GUARD_NOS_INT + unused/5 + _BINARY_OP_ADD_INT + _POP_TOP_INT + _POP_TOP_INT; macro(BINARY_OP_SUBTRACT_INT) = - _GUARD_TOS_INT + _GUARD_NOS_INT + unused/5 + _BINARY_OP_SUBTRACT_INT; + _GUARD_TOS_INT + _GUARD_NOS_INT + unused/5 + _BINARY_OP_SUBTRACT_INT + _POP_TOP_INT + _POP_TOP_INT; op(_GUARD_NOS_FLOAT, (left, unused -- left, unused)) { PyObject *left_o = PyStackRef_AsPyObjectBorrow(left); @@ -678,53 +678,7 @@ dummy_func( EXIT_IF(!PyFloat_CheckExact(value_o)); } - pure op(_BINARY_OP_MULTIPLY_FLOAT, (left, right -- res)) { - PyObject *left_o = PyStackRef_AsPyObjectBorrow(left); - PyObject *right_o = PyStackRef_AsPyObjectBorrow(right); - assert(PyFloat_CheckExact(left_o)); - assert(PyFloat_CheckExact(right_o)); - - STAT_INC(BINARY_OP, hit); - double dres = - ((PyFloatObject *)left_o)->ob_fval * - ((PyFloatObject *)right_o)->ob_fval; - res = _PyFloat_FromDouble_ConsumeInputs(left, right, dres); - INPUTS_DEAD(); - ERROR_IF(PyStackRef_IsNull(res)); - } - - pure op(_BINARY_OP_ADD_FLOAT, (left, right -- res)) { - PyObject *left_o = PyStackRef_AsPyObjectBorrow(left); - PyObject *right_o = PyStackRef_AsPyObjectBorrow(right); - assert(PyFloat_CheckExact(left_o)); - assert(PyFloat_CheckExact(right_o)); - - STAT_INC(BINARY_OP, hit); - double dres = - ((PyFloatObject *)left_o)->ob_fval + - ((PyFloatObject *)right_o)->ob_fval; - res = _PyFloat_FromDouble_ConsumeInputs(left, right, dres); - INPUTS_DEAD(); - ERROR_IF(PyStackRef_IsNull(res)); - } - - pure op(_BINARY_OP_SUBTRACT_FLOAT, (left, right -- res)) { - PyObject *left_o = PyStackRef_AsPyObjectBorrow(left); - PyObject *right_o = PyStackRef_AsPyObjectBorrow(right); - assert(PyFloat_CheckExact(left_o)); - assert(PyFloat_CheckExact(right_o)); - - STAT_INC(BINARY_OP, hit); - double dres = - ((PyFloatObject *)left_o)->ob_fval - - ((PyFloatObject *)right_o)->ob_fval; - res = _PyFloat_FromDouble_ConsumeInputs(left, right, dres); - INPUTS_DEAD(); - ERROR_IF(PyStackRef_IsNull(res)); - } - - - pure op(_BINARY_OP_MULTIPLY_FLOAT__NO_DECREF_INPUTS, (left, right -- res)) { + pure op(_BINARY_OP_MULTIPLY_FLOAT, (left, right -- res, l, r)) { PyObject *left_o = PyStackRef_AsPyObjectBorrow(left); PyObject *right_o = PyStackRef_AsPyObjectBorrow(right); assert(PyFloat_CheckExact(left_o)); @@ -735,11 +689,15 @@ dummy_func( ((PyFloatObject *)left_o)->ob_fval * ((PyFloatObject *)right_o)->ob_fval; res = PyStackRef_FromPyObjectSteal(PyFloat_FromDouble(dres)); + if (PyStackRef_IsNull(res)) { + ERROR_NO_POP(); + } + l = left; + r = right; INPUTS_DEAD(); - ERROR_IF(PyStackRef_IsNull(res)); } - pure op(_BINARY_OP_ADD_FLOAT__NO_DECREF_INPUTS, (left, right -- res)) { + pure op(_BINARY_OP_ADD_FLOAT, (left, right -- res, l, r)) { PyObject *left_o = PyStackRef_AsPyObjectBorrow(left); PyObject *right_o = PyStackRef_AsPyObjectBorrow(right); assert(PyFloat_CheckExact(left_o)); @@ -750,11 +708,15 @@ dummy_func( ((PyFloatObject *)left_o)->ob_fval + ((PyFloatObject *)right_o)->ob_fval; res = PyStackRef_FromPyObjectSteal(PyFloat_FromDouble(dres)); + if (PyStackRef_IsNull(res)) { + ERROR_NO_POP(); + } + l = left; + r = right; INPUTS_DEAD(); - ERROR_IF(PyStackRef_IsNull(res)); } - pure op(_BINARY_OP_SUBTRACT_FLOAT__NO_DECREF_INPUTS, (left, right -- res)) { + pure op(_BINARY_OP_SUBTRACT_FLOAT, (left, right -- res, l, r)) { PyObject *left_o = PyStackRef_AsPyObjectBorrow(left); PyObject *right_o = PyStackRef_AsPyObjectBorrow(right); assert(PyFloat_CheckExact(left_o)); @@ -765,16 +727,20 @@ dummy_func( ((PyFloatObject *)left_o)->ob_fval - ((PyFloatObject *)right_o)->ob_fval; res = PyStackRef_FromPyObjectSteal(PyFloat_FromDouble(dres)); + if (PyStackRef_IsNull(res)) { + ERROR_NO_POP(); + } + l = left; + r = right; INPUTS_DEAD(); - ERROR_IF(PyStackRef_IsNull(res)); } macro(BINARY_OP_MULTIPLY_FLOAT) = - _GUARD_TOS_FLOAT + _GUARD_NOS_FLOAT + unused/5 + _BINARY_OP_MULTIPLY_FLOAT; + _GUARD_TOS_FLOAT + _GUARD_NOS_FLOAT + unused/5 + _BINARY_OP_MULTIPLY_FLOAT + _POP_TOP_FLOAT + _POP_TOP_FLOAT; macro(BINARY_OP_ADD_FLOAT) = - _GUARD_TOS_FLOAT + _GUARD_NOS_FLOAT + unused/5 + _BINARY_OP_ADD_FLOAT; + _GUARD_TOS_FLOAT + _GUARD_NOS_FLOAT + unused/5 + _BINARY_OP_ADD_FLOAT + _POP_TOP_FLOAT + _POP_TOP_FLOAT; macro(BINARY_OP_SUBTRACT_FLOAT) = - _GUARD_TOS_FLOAT + _GUARD_NOS_FLOAT + unused/5 + _BINARY_OP_SUBTRACT_FLOAT; + _GUARD_TOS_FLOAT + _GUARD_NOS_FLOAT + unused/5 + _BINARY_OP_SUBTRACT_FLOAT + _POP_TOP_FLOAT + _POP_TOP_FLOAT; pure op(_BINARY_OP_ADD_UNICODE, (left, right -- res)) { PyObject *left_o = PyStackRef_AsPyObjectBorrow(left); @@ -2609,7 +2575,7 @@ dummy_func( } } - op(_STORE_ATTR_INSTANCE_VALUE, (offset/1, value, owner --)) { + op(_STORE_ATTR_INSTANCE_VALUE, (offset/1, value, owner -- o)) { PyObject *owner_o = PyStackRef_AsPyObjectBorrow(owner); STAT_INC(STORE_ATTR, hit); @@ -2623,7 +2589,8 @@ dummy_func( _PyDictValues_AddToInsertionOrder(values, index); } UNLOCK_OBJECT(owner_o); - PyStackRef_CLOSE(owner); + o = owner; + DEAD(owner); Py_XDECREF(old_value); } @@ -2631,7 +2598,8 @@ dummy_func( unused/1 + _GUARD_TYPE_VERSION_AND_LOCK + _GUARD_DORV_NO_DICT + - _STORE_ATTR_INSTANCE_VALUE; + _STORE_ATTR_INSTANCE_VALUE + + POP_TOP; op(_STORE_ATTR_WITH_HINT, (hint/1, value, owner --)) { PyObject *owner_o = PyStackRef_AsPyObjectBorrow(owner); @@ -2672,7 +2640,7 @@ dummy_func( _GUARD_TYPE_VERSION + _STORE_ATTR_WITH_HINT; - op(_STORE_ATTR_SLOT, (index/1, value, owner --)) { + op(_STORE_ATTR_SLOT, (index/1, value, owner -- o)) { PyObject *owner_o = PyStackRef_AsPyObjectBorrow(owner); DEOPT_IF(!LOCK_OBJECT(owner_o)); @@ -2681,14 +2649,16 @@ dummy_func( PyObject *old_value = *(PyObject **)addr; FT_ATOMIC_STORE_PTR_RELEASE(*(PyObject **)addr, PyStackRef_AsPyObjectSteal(value)); UNLOCK_OBJECT(owner_o); - PyStackRef_CLOSE(owner); + INPUTS_DEAD(); + o = owner; Py_XDECREF(old_value); } macro(STORE_ATTR_SLOT) = unused/1 + _GUARD_TYPE_VERSION + - _STORE_ATTR_SLOT; + _STORE_ATTR_SLOT + + POP_TOP; family(COMPARE_OP, INLINE_CACHE_ENTRIES_COMPARE_OP) = { COMPARE_OP_FLOAT, @@ -2733,7 +2703,7 @@ dummy_func( _GUARD_TOS_FLOAT + _GUARD_NOS_FLOAT + unused/1 + _COMPARE_OP_FLOAT; macro(COMPARE_OP_INT) = - _GUARD_TOS_INT + _GUARD_NOS_INT + unused/1 + _COMPARE_OP_INT; + _GUARD_TOS_INT + _GUARD_NOS_INT + unused/1 + _COMPARE_OP_INT + _POP_TOP_INT + _POP_TOP_INT; macro(COMPARE_OP_STR) = _GUARD_TOS_UNICODE + _GUARD_NOS_UNICODE + unused/1 + _COMPARE_OP_STR; @@ -2756,7 +2726,7 @@ dummy_func( } // Similar to COMPARE_OP_FLOAT - op(_COMPARE_OP_INT, (left, right -- res)) { + op(_COMPARE_OP_INT, (left, right -- res, l, r)) { PyObject *left_o = PyStackRef_AsPyObjectBorrow(left); PyObject *right_o = PyStackRef_AsPyObjectBorrow(right); @@ -2769,9 +2739,9 @@ dummy_func( Py_ssize_t iright = _PyLong_CompactValue((PyLongObject *)right_o); // 2 if <, 4 if >, 8 if ==; this matches the low 4 bits of the oparg int sign_ish = COMPARISON_BIT(ileft, iright); - PyStackRef_CLOSE_SPECIALIZED(left, _PyLong_ExactDealloc); + l = left; + r = right; DEAD(left); - PyStackRef_CLOSE_SPECIALIZED(right, _PyLong_ExactDealloc); DEAD(right); res = (sign_ish & oparg) ? PyStackRef_True : PyStackRef_False; // It's always a bool, so we don't care about oparg & 16. diff --git a/Python/ceval_macros.h b/Python/ceval_macros.h index 26312d0ea5aa5c..a526a453dd918a 100644 --- a/Python/ceval_macros.h +++ b/Python/ceval_macros.h @@ -252,10 +252,11 @@ GETITEM(PyObject *v, Py_ssize_t i) { (frame->owner == FRAME_OWNED_BY_INTERPRETER || (STACK_LEVEL() >= 0 && STACK_LEVEL() <= STACK_SIZE())) #if defined(Py_DEBUG) && !defined(_Py_JIT) -#define WITHIN_STACK_BOUNDS_WITH_CACHE() \ - (frame->owner == FRAME_OWNED_BY_INTERPRETER || (STACK_LEVEL() >= 0 && (STACK_LEVEL() + current_cached_values) <= STACK_SIZE())) +// This allows temporary stack "overflows", provided it's all in the cache at any point of time. +#define WITHIN_STACK_BOUNDS_IGNORING_CACHE() \ + (frame->owner == FRAME_OWNED_BY_INTERPRETER || (STACK_LEVEL() >= 0 && (STACK_LEVEL()) <= STACK_SIZE())) #else -#define WITHIN_STACK_BOUNDS_WITH_CACHE WITHIN_STACK_BOUNDS +#define WITHIN_STACK_BOUNDS_IGNORING_CACHE WITHIN_STACK_BOUNDS #endif /* Data access macros */ diff --git a/Python/executor_cases.c.h b/Python/executor_cases.c.h index e7f6bb2ed0ce0d..b2ce7d0d182215 100644 --- a/Python/executor_cases.c.h +++ b/Python/executor_cases.c.h @@ -10,37 +10,37 @@ case _NOP_r00: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); SET_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _NOP_r11: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef _stack_item_0 = _tos_cache0; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _NOP_r22: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; _tos_cache1 = _stack_item_1; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _NOP_r33: { CHECK_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; _PyStackRef _stack_item_2 = _tos_cache2; @@ -48,13 +48,13 @@ _tos_cache1 = _stack_item_1; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _CHECK_PERIODIC_r00: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyFrame_SetStackPointer(frame, stack_pointer); int err = check_periodics(tstate); stack_pointer = _PyFrame_GetStackPointer(frame); @@ -66,7 +66,7 @@ _tos_cache1 = PyStackRef_ZERO_BITS; _tos_cache2 = PyStackRef_ZERO_BITS; SET_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } @@ -74,7 +74,7 @@ case _CHECK_PERIODIC_IF_NOT_YIELD_FROM_r00: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); oparg = CURRENT_OPARG(); if ((oparg & RESUME_OPARG_LOCATION_MASK) < RESUME_AFTER_YIELD_FROM) { _PyFrame_SetStackPointer(frame, stack_pointer); @@ -89,7 +89,7 @@ _tos_cache1 = PyStackRef_ZERO_BITS; _tos_cache2 = PyStackRef_ZERO_BITS; SET_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } @@ -99,7 +99,7 @@ case _RESUME_CHECK_r00: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); #if defined(__EMSCRIPTEN__) if (_Py_emscripten_signal_clock == 0) { UOP_STAT_INC(uopcode, miss); @@ -125,17 +125,18 @@ } #endif SET_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _RESUME_CHECK_r11: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef _stack_item_0 = _tos_cache0; #if defined(__EMSCRIPTEN__) if (_Py_emscripten_signal_clock == 0) { UOP_STAT_INC(uopcode, miss); + _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(1); JUMP_TO_JUMP_TARGET(); } @@ -146,6 +147,7 @@ assert((version & _PY_EVAL_EVENTS_MASK) == 0); if (eval_breaker != version) { UOP_STAT_INC(uopcode, miss); + _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(1); JUMP_TO_JUMP_TARGET(); } @@ -153,24 +155,27 @@ if (frame->tlbc_index != ((_PyThreadStateImpl *)tstate)->tlbc_index) { UOP_STAT_INC(uopcode, miss); + _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(1); JUMP_TO_JUMP_TARGET(); } #endif _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _RESUME_CHECK_r22: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; #if defined(__EMSCRIPTEN__) if (_Py_emscripten_signal_clock == 0) { UOP_STAT_INC(uopcode, miss); + _tos_cache1 = _stack_item_1; + _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(2); JUMP_TO_JUMP_TARGET(); } @@ -181,6 +186,8 @@ assert((version & _PY_EVAL_EVENTS_MASK) == 0); if (eval_breaker != version) { UOP_STAT_INC(uopcode, miss); + _tos_cache1 = _stack_item_1; + _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(2); JUMP_TO_JUMP_TARGET(); } @@ -188,6 +195,8 @@ if (frame->tlbc_index != ((_PyThreadStateImpl *)tstate)->tlbc_index) { UOP_STAT_INC(uopcode, miss); + _tos_cache1 = _stack_item_1; + _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(2); JUMP_TO_JUMP_TARGET(); } @@ -195,19 +204,22 @@ _tos_cache1 = _stack_item_1; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _RESUME_CHECK_r33: { CHECK_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; _PyStackRef _stack_item_2 = _tos_cache2; #if defined(__EMSCRIPTEN__) if (_Py_emscripten_signal_clock == 0) { UOP_STAT_INC(uopcode, miss); + _tos_cache2 = _stack_item_2; + _tos_cache1 = _stack_item_1; + _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(3); JUMP_TO_JUMP_TARGET(); } @@ -218,6 +230,9 @@ assert((version & _PY_EVAL_EVENTS_MASK) == 0); if (eval_breaker != version) { UOP_STAT_INC(uopcode, miss); + _tos_cache2 = _stack_item_2; + _tos_cache1 = _stack_item_1; + _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(3); JUMP_TO_JUMP_TARGET(); } @@ -225,6 +240,9 @@ if (frame->tlbc_index != ((_PyThreadStateImpl *)tstate)->tlbc_index) { UOP_STAT_INC(uopcode, miss); + _tos_cache2 = _stack_item_2; + _tos_cache1 = _stack_item_1; + _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(3); JUMP_TO_JUMP_TARGET(); } @@ -233,7 +251,7 @@ _tos_cache1 = _stack_item_1; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } @@ -241,7 +259,7 @@ case _LOAD_FAST_CHECK_r01: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef value; oparg = CURRENT_OPARG(); _PyStackRef value_s = GETLOCAL(oparg); @@ -258,13 +276,72 @@ value = PyStackRef_DUP(value_s); _tos_cache0 = value; SET_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); + break; + } + + case _LOAD_FAST_CHECK_r12: { + CHECK_CURRENT_CACHED_VALUES(1); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); + _PyStackRef value; + _PyStackRef _stack_item_0 = _tos_cache0; + oparg = CURRENT_OPARG(); + _PyStackRef value_s = GETLOCAL(oparg); + if (PyStackRef_IsNull(value_s)) { + stack_pointer[0] = _stack_item_0; + stack_pointer += 1; + ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); + _PyFrame_SetStackPointer(frame, stack_pointer); + _PyEval_FormatExcCheckArg(tstate, PyExc_UnboundLocalError, + UNBOUNDLOCAL_ERROR_MSG, + PyTuple_GetItem(_PyFrame_GetCode(frame)->co_localsplusnames, oparg) + ); + stack_pointer = _PyFrame_GetStackPointer(frame); + SET_CURRENT_CACHED_VALUES(0); + JUMP_TO_ERROR(); + } + value = PyStackRef_DUP(value_s); + _tos_cache1 = value; + _tos_cache0 = _stack_item_0; + SET_CURRENT_CACHED_VALUES(2); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); + break; + } + + case _LOAD_FAST_CHECK_r23: { + CHECK_CURRENT_CACHED_VALUES(2); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); + _PyStackRef value; + _PyStackRef _stack_item_0 = _tos_cache0; + _PyStackRef _stack_item_1 = _tos_cache1; + oparg = CURRENT_OPARG(); + _PyStackRef value_s = GETLOCAL(oparg); + if (PyStackRef_IsNull(value_s)) { + stack_pointer[0] = _stack_item_0; + stack_pointer[1] = _stack_item_1; + stack_pointer += 2; + ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); + _PyFrame_SetStackPointer(frame, stack_pointer); + _PyEval_FormatExcCheckArg(tstate, PyExc_UnboundLocalError, + UNBOUNDLOCAL_ERROR_MSG, + PyTuple_GetItem(_PyFrame_GetCode(frame)->co_localsplusnames, oparg) + ); + stack_pointer = _PyFrame_GetStackPointer(frame); + SET_CURRENT_CACHED_VALUES(0); + JUMP_TO_ERROR(); + } + value = PyStackRef_DUP(value_s); + _tos_cache2 = value; + _tos_cache1 = _stack_item_1; + _tos_cache0 = _stack_item_0; + SET_CURRENT_CACHED_VALUES(3); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _LOAD_FAST_0_r01: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef value; oparg = 0; assert(oparg == CURRENT_OPARG()); @@ -272,13 +349,13 @@ value = PyStackRef_DUP(GETLOCAL(oparg)); _tos_cache0 = value; SET_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _LOAD_FAST_0_r12: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef value; _PyStackRef _stack_item_0 = _tos_cache0; oparg = 0; @@ -288,13 +365,13 @@ _tos_cache1 = value; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _LOAD_FAST_0_r23: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef value; _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; @@ -306,13 +383,13 @@ _tos_cache1 = _stack_item_1; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _LOAD_FAST_1_r01: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef value; oparg = 1; assert(oparg == CURRENT_OPARG()); @@ -320,13 +397,13 @@ value = PyStackRef_DUP(GETLOCAL(oparg)); _tos_cache0 = value; SET_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _LOAD_FAST_1_r12: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef value; _PyStackRef _stack_item_0 = _tos_cache0; oparg = 1; @@ -336,13 +413,13 @@ _tos_cache1 = value; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _LOAD_FAST_1_r23: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef value; _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; @@ -354,13 +431,13 @@ _tos_cache1 = _stack_item_1; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _LOAD_FAST_2_r01: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef value; oparg = 2; assert(oparg == CURRENT_OPARG()); @@ -368,13 +445,13 @@ value = PyStackRef_DUP(GETLOCAL(oparg)); _tos_cache0 = value; SET_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _LOAD_FAST_2_r12: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef value; _PyStackRef _stack_item_0 = _tos_cache0; oparg = 2; @@ -384,13 +461,13 @@ _tos_cache1 = value; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _LOAD_FAST_2_r23: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef value; _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; @@ -402,13 +479,13 @@ _tos_cache1 = _stack_item_1; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _LOAD_FAST_3_r01: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef value; oparg = 3; assert(oparg == CURRENT_OPARG()); @@ -416,13 +493,13 @@ value = PyStackRef_DUP(GETLOCAL(oparg)); _tos_cache0 = value; SET_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _LOAD_FAST_3_r12: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef value; _PyStackRef _stack_item_0 = _tos_cache0; oparg = 3; @@ -432,13 +509,13 @@ _tos_cache1 = value; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _LOAD_FAST_3_r23: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef value; _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; @@ -450,13 +527,13 @@ _tos_cache1 = _stack_item_1; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _LOAD_FAST_4_r01: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef value; oparg = 4; assert(oparg == CURRENT_OPARG()); @@ -464,13 +541,13 @@ value = PyStackRef_DUP(GETLOCAL(oparg)); _tos_cache0 = value; SET_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _LOAD_FAST_4_r12: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef value; _PyStackRef _stack_item_0 = _tos_cache0; oparg = 4; @@ -480,13 +557,13 @@ _tos_cache1 = value; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _LOAD_FAST_4_r23: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef value; _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; @@ -498,13 +575,13 @@ _tos_cache1 = _stack_item_1; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _LOAD_FAST_5_r01: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef value; oparg = 5; assert(oparg == CURRENT_OPARG()); @@ -512,13 +589,13 @@ value = PyStackRef_DUP(GETLOCAL(oparg)); _tos_cache0 = value; SET_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _LOAD_FAST_5_r12: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef value; _PyStackRef _stack_item_0 = _tos_cache0; oparg = 5; @@ -528,13 +605,13 @@ _tos_cache1 = value; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _LOAD_FAST_5_r23: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef value; _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; @@ -546,13 +623,13 @@ _tos_cache1 = _stack_item_1; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _LOAD_FAST_6_r01: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef value; oparg = 6; assert(oparg == CURRENT_OPARG()); @@ -560,13 +637,13 @@ value = PyStackRef_DUP(GETLOCAL(oparg)); _tos_cache0 = value; SET_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _LOAD_FAST_6_r12: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef value; _PyStackRef _stack_item_0 = _tos_cache0; oparg = 6; @@ -576,13 +653,13 @@ _tos_cache1 = value; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _LOAD_FAST_6_r23: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef value; _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; @@ -594,13 +671,13 @@ _tos_cache1 = _stack_item_1; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _LOAD_FAST_7_r01: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef value; oparg = 7; assert(oparg == CURRENT_OPARG()); @@ -608,13 +685,13 @@ value = PyStackRef_DUP(GETLOCAL(oparg)); _tos_cache0 = value; SET_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _LOAD_FAST_7_r12: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef value; _PyStackRef _stack_item_0 = _tos_cache0; oparg = 7; @@ -624,13 +701,13 @@ _tos_cache1 = value; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _LOAD_FAST_7_r23: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef value; _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; @@ -642,26 +719,26 @@ _tos_cache1 = _stack_item_1; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _LOAD_FAST_r01: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef value; oparg = CURRENT_OPARG(); assert(!PyStackRef_IsNull(GETLOCAL(oparg))); value = PyStackRef_DUP(GETLOCAL(oparg)); _tos_cache0 = value; SET_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _LOAD_FAST_r12: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef value; _PyStackRef _stack_item_0 = _tos_cache0; oparg = CURRENT_OPARG(); @@ -670,13 +747,13 @@ _tos_cache1 = value; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _LOAD_FAST_r23: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef value; _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; @@ -687,13 +764,13 @@ _tos_cache1 = _stack_item_1; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _LOAD_FAST_BORROW_0_r01: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef value; oparg = 0; assert(oparg == CURRENT_OPARG()); @@ -701,13 +778,13 @@ value = PyStackRef_Borrow(GETLOCAL(oparg)); _tos_cache0 = value; SET_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _LOAD_FAST_BORROW_0_r12: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef value; _PyStackRef _stack_item_0 = _tos_cache0; oparg = 0; @@ -717,13 +794,13 @@ _tos_cache1 = value; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _LOAD_FAST_BORROW_0_r23: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef value; _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; @@ -735,13 +812,13 @@ _tos_cache1 = _stack_item_1; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _LOAD_FAST_BORROW_1_r01: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef value; oparg = 1; assert(oparg == CURRENT_OPARG()); @@ -749,13 +826,13 @@ value = PyStackRef_Borrow(GETLOCAL(oparg)); _tos_cache0 = value; SET_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _LOAD_FAST_BORROW_1_r12: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef value; _PyStackRef _stack_item_0 = _tos_cache0; oparg = 1; @@ -765,13 +842,13 @@ _tos_cache1 = value; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _LOAD_FAST_BORROW_1_r23: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef value; _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; @@ -783,13 +860,13 @@ _tos_cache1 = _stack_item_1; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _LOAD_FAST_BORROW_2_r01: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef value; oparg = 2; assert(oparg == CURRENT_OPARG()); @@ -797,13 +874,13 @@ value = PyStackRef_Borrow(GETLOCAL(oparg)); _tos_cache0 = value; SET_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _LOAD_FAST_BORROW_2_r12: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef value; _PyStackRef _stack_item_0 = _tos_cache0; oparg = 2; @@ -813,13 +890,13 @@ _tos_cache1 = value; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _LOAD_FAST_BORROW_2_r23: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef value; _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; @@ -831,13 +908,13 @@ _tos_cache1 = _stack_item_1; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _LOAD_FAST_BORROW_3_r01: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef value; oparg = 3; assert(oparg == CURRENT_OPARG()); @@ -845,13 +922,13 @@ value = PyStackRef_Borrow(GETLOCAL(oparg)); _tos_cache0 = value; SET_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _LOAD_FAST_BORROW_3_r12: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef value; _PyStackRef _stack_item_0 = _tos_cache0; oparg = 3; @@ -861,13 +938,13 @@ _tos_cache1 = value; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _LOAD_FAST_BORROW_3_r23: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef value; _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; @@ -879,13 +956,13 @@ _tos_cache1 = _stack_item_1; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _LOAD_FAST_BORROW_4_r01: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef value; oparg = 4; assert(oparg == CURRENT_OPARG()); @@ -893,13 +970,13 @@ value = PyStackRef_Borrow(GETLOCAL(oparg)); _tos_cache0 = value; SET_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _LOAD_FAST_BORROW_4_r12: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef value; _PyStackRef _stack_item_0 = _tos_cache0; oparg = 4; @@ -909,13 +986,13 @@ _tos_cache1 = value; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _LOAD_FAST_BORROW_4_r23: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef value; _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; @@ -927,13 +1004,13 @@ _tos_cache1 = _stack_item_1; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _LOAD_FAST_BORROW_5_r01: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef value; oparg = 5; assert(oparg == CURRENT_OPARG()); @@ -941,13 +1018,13 @@ value = PyStackRef_Borrow(GETLOCAL(oparg)); _tos_cache0 = value; SET_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _LOAD_FAST_BORROW_5_r12: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef value; _PyStackRef _stack_item_0 = _tos_cache0; oparg = 5; @@ -957,13 +1034,13 @@ _tos_cache1 = value; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _LOAD_FAST_BORROW_5_r23: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef value; _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; @@ -975,13 +1052,13 @@ _tos_cache1 = _stack_item_1; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _LOAD_FAST_BORROW_6_r01: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef value; oparg = 6; assert(oparg == CURRENT_OPARG()); @@ -989,13 +1066,13 @@ value = PyStackRef_Borrow(GETLOCAL(oparg)); _tos_cache0 = value; SET_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _LOAD_FAST_BORROW_6_r12: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef value; _PyStackRef _stack_item_0 = _tos_cache0; oparg = 6; @@ -1005,13 +1082,13 @@ _tos_cache1 = value; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _LOAD_FAST_BORROW_6_r23: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef value; _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; @@ -1023,13 +1100,13 @@ _tos_cache1 = _stack_item_1; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _LOAD_FAST_BORROW_7_r01: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef value; oparg = 7; assert(oparg == CURRENT_OPARG()); @@ -1037,13 +1114,13 @@ value = PyStackRef_Borrow(GETLOCAL(oparg)); _tos_cache0 = value; SET_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _LOAD_FAST_BORROW_7_r12: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef value; _PyStackRef _stack_item_0 = _tos_cache0; oparg = 7; @@ -1053,13 +1130,13 @@ _tos_cache1 = value; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _LOAD_FAST_BORROW_7_r23: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef value; _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; @@ -1071,26 +1148,26 @@ _tos_cache1 = _stack_item_1; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _LOAD_FAST_BORROW_r01: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef value; oparg = CURRENT_OPARG(); assert(!PyStackRef_IsNull(GETLOCAL(oparg))); value = PyStackRef_Borrow(GETLOCAL(oparg)); _tos_cache0 = value; SET_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _LOAD_FAST_BORROW_r12: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef value; _PyStackRef _stack_item_0 = _tos_cache0; oparg = CURRENT_OPARG(); @@ -1099,13 +1176,13 @@ _tos_cache1 = value; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _LOAD_FAST_BORROW_r23: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef value; _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; @@ -1116,26 +1193,26 @@ _tos_cache1 = _stack_item_1; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _LOAD_FAST_AND_CLEAR_r01: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef value; oparg = CURRENT_OPARG(); value = GETLOCAL(oparg); GETLOCAL(oparg) = PyStackRef_NULL; _tos_cache0 = value; SET_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _LOAD_FAST_AND_CLEAR_r12: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef value; _PyStackRef _stack_item_0 = _tos_cache0; oparg = CURRENT_OPARG(); @@ -1144,13 +1221,13 @@ _tos_cache1 = value; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _LOAD_FAST_AND_CLEAR_r23: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef value; _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; @@ -1161,26 +1238,26 @@ _tos_cache1 = _stack_item_1; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _LOAD_CONST_r01: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef value; oparg = CURRENT_OPARG(); PyObject *obj = GETITEM(FRAME_CO_CONSTS, oparg); value = PyStackRef_FromPyObjectBorrow(obj); _tos_cache0 = value; SET_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _LOAD_CONST_r12: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef value; _PyStackRef _stack_item_0 = _tos_cache0; oparg = CURRENT_OPARG(); @@ -1189,13 +1266,13 @@ _tos_cache1 = value; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _LOAD_CONST_r23: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef value; _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; @@ -1206,13 +1283,13 @@ _tos_cache1 = _stack_item_1; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _LOAD_SMALL_INT_0_r01: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef value; oparg = 0; assert(oparg == CURRENT_OPARG()); @@ -1221,13 +1298,13 @@ value = PyStackRef_FromPyObjectBorrow(obj); _tos_cache0 = value; SET_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _LOAD_SMALL_INT_0_r12: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef value; _PyStackRef _stack_item_0 = _tos_cache0; oparg = 0; @@ -1238,13 +1315,13 @@ _tos_cache1 = value; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _LOAD_SMALL_INT_0_r23: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef value; _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; @@ -1257,13 +1334,13 @@ _tos_cache1 = _stack_item_1; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _LOAD_SMALL_INT_1_r01: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef value; oparg = 1; assert(oparg == CURRENT_OPARG()); @@ -1272,13 +1349,13 @@ value = PyStackRef_FromPyObjectBorrow(obj); _tos_cache0 = value; SET_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _LOAD_SMALL_INT_1_r12: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef value; _PyStackRef _stack_item_0 = _tos_cache0; oparg = 1; @@ -1289,13 +1366,13 @@ _tos_cache1 = value; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _LOAD_SMALL_INT_1_r23: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef value; _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; @@ -1308,13 +1385,13 @@ _tos_cache1 = _stack_item_1; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _LOAD_SMALL_INT_2_r01: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef value; oparg = 2; assert(oparg == CURRENT_OPARG()); @@ -1323,13 +1400,13 @@ value = PyStackRef_FromPyObjectBorrow(obj); _tos_cache0 = value; SET_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _LOAD_SMALL_INT_2_r12: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef value; _PyStackRef _stack_item_0 = _tos_cache0; oparg = 2; @@ -1340,13 +1417,13 @@ _tos_cache1 = value; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _LOAD_SMALL_INT_2_r23: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef value; _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; @@ -1359,13 +1436,13 @@ _tos_cache1 = _stack_item_1; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _LOAD_SMALL_INT_3_r01: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef value; oparg = 3; assert(oparg == CURRENT_OPARG()); @@ -1374,13 +1451,13 @@ value = PyStackRef_FromPyObjectBorrow(obj); _tos_cache0 = value; SET_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _LOAD_SMALL_INT_3_r12: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef value; _PyStackRef _stack_item_0 = _tos_cache0; oparg = 3; @@ -1391,13 +1468,13 @@ _tos_cache1 = value; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _LOAD_SMALL_INT_3_r23: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef value; _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; @@ -1410,13 +1487,13 @@ _tos_cache1 = _stack_item_1; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _LOAD_SMALL_INT_r01: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef value; oparg = CURRENT_OPARG(); assert(oparg < _PY_NSMALLPOSINTS); @@ -1424,13 +1501,13 @@ value = PyStackRef_FromPyObjectBorrow(obj); _tos_cache0 = value; SET_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _LOAD_SMALL_INT_r12: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef value; _PyStackRef _stack_item_0 = _tos_cache0; oparg = CURRENT_OPARG(); @@ -1440,13 +1517,13 @@ _tos_cache1 = value; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _LOAD_SMALL_INT_r23: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef value; _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; @@ -1458,13 +1535,13 @@ _tos_cache1 = _stack_item_1; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _STORE_FAST_0_r10: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef value; _PyStackRef _stack_item_0 = _tos_cache0; oparg = 0; @@ -1479,13 +1556,13 @@ _tos_cache1 = PyStackRef_ZERO_BITS; _tos_cache2 = PyStackRef_ZERO_BITS; SET_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _STORE_FAST_1_r10: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef value; _PyStackRef _stack_item_0 = _tos_cache0; oparg = 1; @@ -1500,13 +1577,13 @@ _tos_cache1 = PyStackRef_ZERO_BITS; _tos_cache2 = PyStackRef_ZERO_BITS; SET_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _STORE_FAST_2_r10: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef value; _PyStackRef _stack_item_0 = _tos_cache0; oparg = 2; @@ -1521,13 +1598,13 @@ _tos_cache1 = PyStackRef_ZERO_BITS; _tos_cache2 = PyStackRef_ZERO_BITS; SET_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _STORE_FAST_3_r10: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef value; _PyStackRef _stack_item_0 = _tos_cache0; oparg = 3; @@ -1542,13 +1619,13 @@ _tos_cache1 = PyStackRef_ZERO_BITS; _tos_cache2 = PyStackRef_ZERO_BITS; SET_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _STORE_FAST_4_r10: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef value; _PyStackRef _stack_item_0 = _tos_cache0; oparg = 4; @@ -1563,13 +1640,13 @@ _tos_cache1 = PyStackRef_ZERO_BITS; _tos_cache2 = PyStackRef_ZERO_BITS; SET_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _STORE_FAST_5_r10: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef value; _PyStackRef _stack_item_0 = _tos_cache0; oparg = 5; @@ -1584,13 +1661,13 @@ _tos_cache1 = PyStackRef_ZERO_BITS; _tos_cache2 = PyStackRef_ZERO_BITS; SET_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _STORE_FAST_6_r10: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef value; _PyStackRef _stack_item_0 = _tos_cache0; oparg = 6; @@ -1605,13 +1682,13 @@ _tos_cache1 = PyStackRef_ZERO_BITS; _tos_cache2 = PyStackRef_ZERO_BITS; SET_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _STORE_FAST_7_r10: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef value; _PyStackRef _stack_item_0 = _tos_cache0; oparg = 7; @@ -1626,13 +1703,13 @@ _tos_cache1 = PyStackRef_ZERO_BITS; _tos_cache2 = PyStackRef_ZERO_BITS; SET_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _STORE_FAST_r10: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef value; _PyStackRef _stack_item_0 = _tos_cache0; oparg = CURRENT_OPARG(); @@ -1646,13 +1723,13 @@ _tos_cache1 = PyStackRef_ZERO_BITS; _tos_cache2 = PyStackRef_ZERO_BITS; SET_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _POP_TOP_r10: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef value; _PyStackRef _stack_item_0 = _tos_cache0; value = _stack_item_0; @@ -1663,13 +1740,13 @@ _tos_cache1 = PyStackRef_ZERO_BITS; _tos_cache2 = PyStackRef_ZERO_BITS; SET_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _POP_TOP_NOP_r00: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef value; value = stack_pointer[-1]; assert(PyStackRef_IsNull(value) || (!PyStackRef_RefcountOnObject(value)) || @@ -1677,26 +1754,26 @@ SET_CURRENT_CACHED_VALUES(0); stack_pointer += -1; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _POP_TOP_NOP_r10: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef value; _PyStackRef _stack_item_0 = _tos_cache0; value = _stack_item_0; assert(PyStackRef_IsNull(value) || (!PyStackRef_RefcountOnObject(value)) || _Py_IsImmortal((PyStackRef_AsPyObjectBorrow(value)))); SET_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _POP_TOP_NOP_r21: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef value; _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; @@ -1705,13 +1782,13 @@ _Py_IsImmortal((PyStackRef_AsPyObjectBorrow(value)))); _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _POP_TOP_NOP_r32: { CHECK_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef value; _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; @@ -1722,13 +1799,13 @@ _tos_cache1 = _stack_item_1; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _POP_TOP_INT_r00: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef value; value = stack_pointer[-1]; assert(PyLong_CheckExact(PyStackRef_AsPyObjectBorrow(value))); @@ -1736,26 +1813,26 @@ SET_CURRENT_CACHED_VALUES(0); stack_pointer += -1; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _POP_TOP_INT_r10: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef value; _PyStackRef _stack_item_0 = _tos_cache0; value = _stack_item_0; assert(PyLong_CheckExact(PyStackRef_AsPyObjectBorrow(value))); PyStackRef_CLOSE_SPECIALIZED(value, _PyLong_ExactDealloc); SET_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _POP_TOP_INT_r21: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef value; _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; @@ -1764,13 +1841,13 @@ PyStackRef_CLOSE_SPECIALIZED(value, _PyLong_ExactDealloc); _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _POP_TOP_INT_r32: { CHECK_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef value; _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; @@ -1781,13 +1858,13 @@ _tos_cache1 = _stack_item_1; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _POP_TOP_FLOAT_r00: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef value; value = stack_pointer[-1]; assert(PyFloat_CheckExact(PyStackRef_AsPyObjectBorrow(value))); @@ -1795,26 +1872,26 @@ SET_CURRENT_CACHED_VALUES(0); stack_pointer += -1; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _POP_TOP_FLOAT_r10: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef value; _PyStackRef _stack_item_0 = _tos_cache0; value = _stack_item_0; assert(PyFloat_CheckExact(PyStackRef_AsPyObjectBorrow(value))); PyStackRef_CLOSE_SPECIALIZED(value, _PyFloat_ExactDealloc); SET_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _POP_TOP_FLOAT_r21: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef value; _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; @@ -1823,13 +1900,13 @@ PyStackRef_CLOSE_SPECIALIZED(value, _PyFloat_ExactDealloc); _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _POP_TOP_FLOAT_r32: { CHECK_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef value; _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; @@ -1840,13 +1917,13 @@ _tos_cache1 = _stack_item_1; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _POP_TOP_UNICODE_r00: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef value; value = stack_pointer[-1]; assert(PyUnicode_CheckExact(PyStackRef_AsPyObjectBorrow(value))); @@ -1854,26 +1931,26 @@ SET_CURRENT_CACHED_VALUES(0); stack_pointer += -1; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _POP_TOP_UNICODE_r10: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef value; _PyStackRef _stack_item_0 = _tos_cache0; value = _stack_item_0; assert(PyUnicode_CheckExact(PyStackRef_AsPyObjectBorrow(value))); PyStackRef_CLOSE_SPECIALIZED(value, _PyUnicode_ExactDealloc); SET_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _POP_TOP_UNICODE_r21: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef value; _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; @@ -1882,13 +1959,13 @@ PyStackRef_CLOSE_SPECIALIZED(value, _PyUnicode_ExactDealloc); _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _POP_TOP_UNICODE_r32: { CHECK_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef value; _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; @@ -1899,13 +1976,13 @@ _tos_cache1 = _stack_item_1; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _POP_TWO_r20: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef tos; _PyStackRef nos; _PyStackRef _stack_item_0 = _tos_cache0; @@ -1927,37 +2004,37 @@ _tos_cache1 = PyStackRef_ZERO_BITS; _tos_cache2 = PyStackRef_ZERO_BITS; SET_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _PUSH_NULL_r01: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef res; res = PyStackRef_NULL; _tos_cache0 = res; SET_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _PUSH_NULL_r12: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef res; _PyStackRef _stack_item_0 = _tos_cache0; res = PyStackRef_NULL; _tos_cache1 = res; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _PUSH_NULL_r23: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef res; _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; @@ -1966,13 +2043,13 @@ _tos_cache1 = _stack_item_1; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _END_FOR_r10: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef value; _PyStackRef _stack_item_0 = _tos_cache0; value = _stack_item_0; @@ -1983,13 +2060,13 @@ _tos_cache1 = PyStackRef_ZERO_BITS; _tos_cache2 = PyStackRef_ZERO_BITS; SET_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _POP_ITER_r20: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef index_or_null; _PyStackRef iter; _PyStackRef _stack_item_0 = _tos_cache0; @@ -2004,13 +2081,13 @@ _tos_cache1 = PyStackRef_ZERO_BITS; _tos_cache2 = PyStackRef_ZERO_BITS; SET_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _END_SEND_r21: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef value; _PyStackRef receiver; _PyStackRef val; @@ -2031,13 +2108,13 @@ SET_CURRENT_CACHED_VALUES(1); stack_pointer += -1; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _UNARY_NEGATIVE_r11: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef value; _PyStackRef res; _PyStackRef _stack_item_0 = _tos_cache0; @@ -2062,13 +2139,13 @@ _tos_cache1 = PyStackRef_ZERO_BITS; _tos_cache2 = PyStackRef_ZERO_BITS; SET_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _UNARY_NOT_r01: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef value; _PyStackRef res; value = stack_pointer[-1]; @@ -2079,13 +2156,13 @@ SET_CURRENT_CACHED_VALUES(1); stack_pointer += -1; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _UNARY_NOT_r11: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef value; _PyStackRef res; _PyStackRef _stack_item_0 = _tos_cache0; @@ -2095,13 +2172,13 @@ ? PyStackRef_True : PyStackRef_False; _tos_cache0 = res; SET_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _UNARY_NOT_r22: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef value; _PyStackRef res; _PyStackRef _stack_item_0 = _tos_cache0; @@ -2113,13 +2190,13 @@ _tos_cache1 = res; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _UNARY_NOT_r33: { CHECK_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef value; _PyStackRef res; _PyStackRef _stack_item_0 = _tos_cache0; @@ -2133,13 +2210,13 @@ _tos_cache1 = _stack_item_1; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _TO_BOOL_r11: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef value; _PyStackRef res; _PyStackRef _stack_item_0 = _tos_cache0; @@ -2164,13 +2241,13 @@ _tos_cache1 = PyStackRef_ZERO_BITS; _tos_cache2 = PyStackRef_ZERO_BITS; SET_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _TO_BOOL_BOOL_r01: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef value; value = stack_pointer[-1]; if (!PyStackRef_BoolCheck(value)) { @@ -2183,37 +2260,40 @@ SET_CURRENT_CACHED_VALUES(1); stack_pointer += -1; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _TO_BOOL_BOOL_r11: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef value; _PyStackRef _stack_item_0 = _tos_cache0; value = _stack_item_0; if (!PyStackRef_BoolCheck(value)) { UOP_STAT_INC(uopcode, miss); + _tos_cache0 = value; SET_CURRENT_CACHED_VALUES(1); JUMP_TO_JUMP_TARGET(); } STAT_INC(TO_BOOL, hit); _tos_cache0 = value; SET_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _TO_BOOL_BOOL_r22: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef value; _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; value = _stack_item_1; if (!PyStackRef_BoolCheck(value)) { UOP_STAT_INC(uopcode, miss); + _tos_cache1 = value; + _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(2); JUMP_TO_JUMP_TARGET(); } @@ -2221,13 +2301,13 @@ _tos_cache1 = value; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _TO_BOOL_BOOL_r33: { CHECK_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef value; _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; @@ -2235,6 +2315,9 @@ value = _stack_item_2; if (!PyStackRef_BoolCheck(value)) { UOP_STAT_INC(uopcode, miss); + _tos_cache2 = value; + _tos_cache1 = _stack_item_1; + _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(3); JUMP_TO_JUMP_TARGET(); } @@ -2243,13 +2326,13 @@ _tos_cache1 = _stack_item_1; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _TO_BOOL_INT_r11: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef value; _PyStackRef res; _PyStackRef _stack_item_0 = _tos_cache0; @@ -2257,6 +2340,7 @@ PyObject *value_o = PyStackRef_AsPyObjectBorrow(value); if (!PyLong_CheckExact(value_o)) { UOP_STAT_INC(uopcode, miss); + _tos_cache0 = value; SET_CURRENT_CACHED_VALUES(1); JUMP_TO_JUMP_TARGET(); } @@ -2275,13 +2359,13 @@ _tos_cache1 = PyStackRef_ZERO_BITS; _tos_cache2 = PyStackRef_ZERO_BITS; SET_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_NOS_LIST_r02: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef nos; nos = stack_pointer[-2]; PyObject *o = PyStackRef_AsPyObjectBorrow(nos); @@ -2295,19 +2379,20 @@ SET_CURRENT_CACHED_VALUES(2); stack_pointer += -2; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_NOS_LIST_r12: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef nos; _PyStackRef _stack_item_0 = _tos_cache0; nos = stack_pointer[-1]; PyObject *o = PyStackRef_AsPyObjectBorrow(nos); if (!PyList_CheckExact(o)) { UOP_STAT_INC(uopcode, miss); + _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(1); JUMP_TO_JUMP_TARGET(); } @@ -2316,13 +2401,13 @@ SET_CURRENT_CACHED_VALUES(2); stack_pointer += -1; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_NOS_LIST_r22: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef nos; _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; @@ -2330,19 +2415,21 @@ PyObject *o = PyStackRef_AsPyObjectBorrow(nos); if (!PyList_CheckExact(o)) { UOP_STAT_INC(uopcode, miss); + _tos_cache1 = _stack_item_1; + _tos_cache0 = nos; SET_CURRENT_CACHED_VALUES(2); JUMP_TO_JUMP_TARGET(); } _tos_cache1 = _stack_item_1; _tos_cache0 = nos; SET_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_NOS_LIST_r33: { CHECK_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef nos; _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; @@ -2351,6 +2438,9 @@ PyObject *o = PyStackRef_AsPyObjectBorrow(nos); if (!PyList_CheckExact(o)) { UOP_STAT_INC(uopcode, miss); + _tos_cache2 = _stack_item_2; + _tos_cache1 = nos; + _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(3); JUMP_TO_JUMP_TARGET(); } @@ -2358,13 +2448,13 @@ _tos_cache1 = nos; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_TOS_LIST_r01: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef tos; tos = stack_pointer[-1]; PyObject *o = PyStackRef_AsPyObjectBorrow(tos); @@ -2377,31 +2467,32 @@ SET_CURRENT_CACHED_VALUES(1); stack_pointer += -1; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_TOS_LIST_r11: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef tos; _PyStackRef _stack_item_0 = _tos_cache0; tos = _stack_item_0; PyObject *o = PyStackRef_AsPyObjectBorrow(tos); if (!PyList_CheckExact(o)) { UOP_STAT_INC(uopcode, miss); + _tos_cache0 = tos; SET_CURRENT_CACHED_VALUES(1); JUMP_TO_JUMP_TARGET(); } _tos_cache0 = tos; SET_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_TOS_LIST_r22: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef tos; _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; @@ -2409,19 +2500,21 @@ PyObject *o = PyStackRef_AsPyObjectBorrow(tos); if (!PyList_CheckExact(o)) { UOP_STAT_INC(uopcode, miss); + _tos_cache1 = tos; + _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(2); JUMP_TO_JUMP_TARGET(); } _tos_cache1 = tos; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_TOS_LIST_r33: { CHECK_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef tos; _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; @@ -2430,6 +2523,9 @@ PyObject *o = PyStackRef_AsPyObjectBorrow(tos); if (!PyList_CheckExact(o)) { UOP_STAT_INC(uopcode, miss); + _tos_cache2 = tos; + _tos_cache1 = _stack_item_1; + _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(3); JUMP_TO_JUMP_TARGET(); } @@ -2437,13 +2533,13 @@ _tos_cache1 = _stack_item_1; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_TOS_SLICE_r01: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef tos; tos = stack_pointer[-1]; PyObject *o = PyStackRef_AsPyObjectBorrow(tos); @@ -2456,31 +2552,32 @@ SET_CURRENT_CACHED_VALUES(1); stack_pointer += -1; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_TOS_SLICE_r11: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef tos; _PyStackRef _stack_item_0 = _tos_cache0; tos = _stack_item_0; PyObject *o = PyStackRef_AsPyObjectBorrow(tos); if (!PySlice_Check(o)) { UOP_STAT_INC(uopcode, miss); + _tos_cache0 = tos; SET_CURRENT_CACHED_VALUES(1); JUMP_TO_JUMP_TARGET(); } _tos_cache0 = tos; SET_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_TOS_SLICE_r22: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef tos; _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; @@ -2488,19 +2585,21 @@ PyObject *o = PyStackRef_AsPyObjectBorrow(tos); if (!PySlice_Check(o)) { UOP_STAT_INC(uopcode, miss); + _tos_cache1 = tos; + _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(2); JUMP_TO_JUMP_TARGET(); } _tos_cache1 = tos; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_TOS_SLICE_r33: { CHECK_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef tos; _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; @@ -2509,6 +2608,9 @@ PyObject *o = PyStackRef_AsPyObjectBorrow(tos); if (!PySlice_Check(o)) { UOP_STAT_INC(uopcode, miss); + _tos_cache2 = tos; + _tos_cache1 = _stack_item_1; + _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(3); JUMP_TO_JUMP_TARGET(); } @@ -2516,13 +2618,13 @@ _tos_cache1 = _stack_item_1; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _TO_BOOL_LIST_r11: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef value; _PyStackRef res; _PyStackRef _stack_item_0 = _tos_cache0; @@ -2546,13 +2648,13 @@ SET_CURRENT_CACHED_VALUES(1); stack_pointer += -1; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _TO_BOOL_NONE_r01: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef value; _PyStackRef res; value = stack_pointer[-1]; @@ -2567,19 +2669,20 @@ SET_CURRENT_CACHED_VALUES(1); stack_pointer += -1; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _TO_BOOL_NONE_r11: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef value; _PyStackRef res; _PyStackRef _stack_item_0 = _tos_cache0; value = _stack_item_0; if (!PyStackRef_IsNone(value)) { UOP_STAT_INC(uopcode, miss); + _tos_cache0 = value; SET_CURRENT_CACHED_VALUES(1); JUMP_TO_JUMP_TARGET(); } @@ -2587,13 +2690,13 @@ res = PyStackRef_False; _tos_cache0 = res; SET_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _TO_BOOL_NONE_r22: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef value; _PyStackRef res; _PyStackRef _stack_item_0 = _tos_cache0; @@ -2601,6 +2704,8 @@ value = _stack_item_1; if (!PyStackRef_IsNone(value)) { UOP_STAT_INC(uopcode, miss); + _tos_cache1 = value; + _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(2); JUMP_TO_JUMP_TARGET(); } @@ -2609,13 +2714,13 @@ _tos_cache1 = res; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _TO_BOOL_NONE_r33: { CHECK_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef value; _PyStackRef res; _PyStackRef _stack_item_0 = _tos_cache0; @@ -2624,6 +2729,9 @@ value = _stack_item_2; if (!PyStackRef_IsNone(value)) { UOP_STAT_INC(uopcode, miss); + _tos_cache2 = value; + _tos_cache1 = _stack_item_1; + _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(3); JUMP_TO_JUMP_TARGET(); } @@ -2633,13 +2741,13 @@ _tos_cache1 = _stack_item_1; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_NOS_UNICODE_r02: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef nos; nos = stack_pointer[-2]; PyObject *o = PyStackRef_AsPyObjectBorrow(nos); @@ -2653,19 +2761,20 @@ SET_CURRENT_CACHED_VALUES(2); stack_pointer += -2; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_NOS_UNICODE_r12: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef nos; _PyStackRef _stack_item_0 = _tos_cache0; nos = stack_pointer[-1]; PyObject *o = PyStackRef_AsPyObjectBorrow(nos); if (!PyUnicode_CheckExact(o)) { UOP_STAT_INC(uopcode, miss); + _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(1); JUMP_TO_JUMP_TARGET(); } @@ -2674,13 +2783,13 @@ SET_CURRENT_CACHED_VALUES(2); stack_pointer += -1; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_NOS_UNICODE_r22: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef nos; _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; @@ -2688,19 +2797,21 @@ PyObject *o = PyStackRef_AsPyObjectBorrow(nos); if (!PyUnicode_CheckExact(o)) { UOP_STAT_INC(uopcode, miss); + _tos_cache1 = _stack_item_1; + _tos_cache0 = nos; SET_CURRENT_CACHED_VALUES(2); JUMP_TO_JUMP_TARGET(); } _tos_cache1 = _stack_item_1; _tos_cache0 = nos; SET_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_NOS_UNICODE_r33: { CHECK_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef nos; _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; @@ -2709,6 +2820,9 @@ PyObject *o = PyStackRef_AsPyObjectBorrow(nos); if (!PyUnicode_CheckExact(o)) { UOP_STAT_INC(uopcode, miss); + _tos_cache2 = _stack_item_2; + _tos_cache1 = nos; + _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(3); JUMP_TO_JUMP_TARGET(); } @@ -2716,13 +2830,13 @@ _tos_cache1 = nos; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_TOS_UNICODE_r01: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef value; value = stack_pointer[-1]; PyObject *value_o = PyStackRef_AsPyObjectBorrow(value); @@ -2735,31 +2849,32 @@ SET_CURRENT_CACHED_VALUES(1); stack_pointer += -1; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_TOS_UNICODE_r11: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef value; _PyStackRef _stack_item_0 = _tos_cache0; value = _stack_item_0; PyObject *value_o = PyStackRef_AsPyObjectBorrow(value); if (!PyUnicode_CheckExact(value_o)) { UOP_STAT_INC(uopcode, miss); + _tos_cache0 = value; SET_CURRENT_CACHED_VALUES(1); JUMP_TO_JUMP_TARGET(); } _tos_cache0 = value; SET_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_TOS_UNICODE_r22: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef value; _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; @@ -2767,19 +2882,21 @@ PyObject *value_o = PyStackRef_AsPyObjectBorrow(value); if (!PyUnicode_CheckExact(value_o)) { UOP_STAT_INC(uopcode, miss); + _tos_cache1 = value; + _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(2); JUMP_TO_JUMP_TARGET(); } _tos_cache1 = value; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_TOS_UNICODE_r33: { CHECK_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef value; _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; @@ -2788,6 +2905,9 @@ PyObject *value_o = PyStackRef_AsPyObjectBorrow(value); if (!PyUnicode_CheckExact(value_o)) { UOP_STAT_INC(uopcode, miss); + _tos_cache2 = value; + _tos_cache1 = _stack_item_1; + _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(3); JUMP_TO_JUMP_TARGET(); } @@ -2795,13 +2915,13 @@ _tos_cache1 = _stack_item_1; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _TO_BOOL_STR_r11: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef value; _PyStackRef res; _PyStackRef _stack_item_0 = _tos_cache0; @@ -2823,13 +2943,13 @@ _tos_cache1 = PyStackRef_ZERO_BITS; _tos_cache2 = PyStackRef_ZERO_BITS; SET_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _REPLACE_WITH_TRUE_r11: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef value; _PyStackRef res; _PyStackRef _stack_item_0 = _tos_cache0; @@ -2842,13 +2962,13 @@ _tos_cache1 = PyStackRef_ZERO_BITS; _tos_cache2 = PyStackRef_ZERO_BITS; SET_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _UNARY_INVERT_r11: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef value; _PyStackRef res; _PyStackRef _stack_item_0 = _tos_cache0; @@ -2873,13 +2993,13 @@ _tos_cache1 = PyStackRef_ZERO_BITS; _tos_cache2 = PyStackRef_ZERO_BITS; SET_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_NOS_INT_r02: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef left; left = stack_pointer[-2]; PyObject *left_o = PyStackRef_AsPyObjectBorrow(left); @@ -2893,19 +3013,20 @@ SET_CURRENT_CACHED_VALUES(2); stack_pointer += -2; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_NOS_INT_r12: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef left; _PyStackRef _stack_item_0 = _tos_cache0; left = stack_pointer[-1]; PyObject *left_o = PyStackRef_AsPyObjectBorrow(left); if (!_PyLong_CheckExactAndCompact(left_o)) { UOP_STAT_INC(uopcode, miss); + _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(1); JUMP_TO_JUMP_TARGET(); } @@ -2914,13 +3035,13 @@ SET_CURRENT_CACHED_VALUES(2); stack_pointer += -1; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_NOS_INT_r22: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef left; _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; @@ -2928,19 +3049,21 @@ PyObject *left_o = PyStackRef_AsPyObjectBorrow(left); if (!_PyLong_CheckExactAndCompact(left_o)) { UOP_STAT_INC(uopcode, miss); + _tos_cache1 = _stack_item_1; + _tos_cache0 = left; SET_CURRENT_CACHED_VALUES(2); JUMP_TO_JUMP_TARGET(); } _tos_cache1 = _stack_item_1; _tos_cache0 = left; SET_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_NOS_INT_r33: { CHECK_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef left; _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; @@ -2949,6 +3072,9 @@ PyObject *left_o = PyStackRef_AsPyObjectBorrow(left); if (!_PyLong_CheckExactAndCompact(left_o)) { UOP_STAT_INC(uopcode, miss); + _tos_cache2 = _stack_item_2; + _tos_cache1 = left; + _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(3); JUMP_TO_JUMP_TARGET(); } @@ -2956,13 +3082,13 @@ _tos_cache1 = left; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_TOS_INT_r01: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef value; value = stack_pointer[-1]; PyObject *value_o = PyStackRef_AsPyObjectBorrow(value); @@ -2975,31 +3101,32 @@ SET_CURRENT_CACHED_VALUES(1); stack_pointer += -1; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_TOS_INT_r11: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef value; _PyStackRef _stack_item_0 = _tos_cache0; value = _stack_item_0; PyObject *value_o = PyStackRef_AsPyObjectBorrow(value); if (!_PyLong_CheckExactAndCompact(value_o)) { UOP_STAT_INC(uopcode, miss); + _tos_cache0 = value; SET_CURRENT_CACHED_VALUES(1); JUMP_TO_JUMP_TARGET(); } _tos_cache0 = value; SET_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_TOS_INT_r22: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef value; _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; @@ -3007,19 +3134,21 @@ PyObject *value_o = PyStackRef_AsPyObjectBorrow(value); if (!_PyLong_CheckExactAndCompact(value_o)) { UOP_STAT_INC(uopcode, miss); + _tos_cache1 = value; + _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(2); JUMP_TO_JUMP_TARGET(); } _tos_cache1 = value; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_TOS_INT_r33: { CHECK_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef value; _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; @@ -3028,6 +3157,9 @@ PyObject *value_o = PyStackRef_AsPyObjectBorrow(value); if (!_PyLong_CheckExactAndCompact(value_o)) { UOP_STAT_INC(uopcode, miss); + _tos_cache2 = value; + _tos_cache1 = _stack_item_1; + _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(3); JUMP_TO_JUMP_TARGET(); } @@ -3035,13 +3167,13 @@ _tos_cache1 = _stack_item_1; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_NOS_OVERFLOWED_r02: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef left; left = stack_pointer[-2]; PyObject *left_o = PyStackRef_AsPyObjectBorrow(left); @@ -3056,13 +3188,13 @@ SET_CURRENT_CACHED_VALUES(2); stack_pointer += -2; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_NOS_OVERFLOWED_r12: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef left; _PyStackRef _stack_item_0 = _tos_cache0; left = stack_pointer[-1]; @@ -3070,6 +3202,7 @@ assert(Py_TYPE(left_o) == &PyLong_Type); if (!_PyLong_IsCompact((PyLongObject *)left_o)) { UOP_STAT_INC(uopcode, miss); + _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(1); JUMP_TO_JUMP_TARGET(); } @@ -3078,13 +3211,13 @@ SET_CURRENT_CACHED_VALUES(2); stack_pointer += -1; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_NOS_OVERFLOWED_r22: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef left; _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; @@ -3093,19 +3226,21 @@ assert(Py_TYPE(left_o) == &PyLong_Type); if (!_PyLong_IsCompact((PyLongObject *)left_o)) { UOP_STAT_INC(uopcode, miss); + _tos_cache1 = _stack_item_1; + _tos_cache0 = left; SET_CURRENT_CACHED_VALUES(2); JUMP_TO_JUMP_TARGET(); } _tos_cache1 = _stack_item_1; _tos_cache0 = left; SET_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_NOS_OVERFLOWED_r33: { CHECK_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef left; _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; @@ -3115,6 +3250,9 @@ assert(Py_TYPE(left_o) == &PyLong_Type); if (!_PyLong_IsCompact((PyLongObject *)left_o)) { UOP_STAT_INC(uopcode, miss); + _tos_cache2 = _stack_item_2; + _tos_cache1 = left; + _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(3); JUMP_TO_JUMP_TARGET(); } @@ -3122,13 +3260,13 @@ _tos_cache1 = left; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_TOS_OVERFLOWED_r01: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef value; value = stack_pointer[-1]; PyObject *value_o = PyStackRef_AsPyObjectBorrow(value); @@ -3142,13 +3280,13 @@ SET_CURRENT_CACHED_VALUES(1); stack_pointer += -1; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_TOS_OVERFLOWED_r11: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef value; _PyStackRef _stack_item_0 = _tos_cache0; value = _stack_item_0; @@ -3156,18 +3294,19 @@ assert(Py_TYPE(value_o) == &PyLong_Type); if (!_PyLong_IsCompact((PyLongObject *)value_o)) { UOP_STAT_INC(uopcode, miss); + _tos_cache0 = value; SET_CURRENT_CACHED_VALUES(1); JUMP_TO_JUMP_TARGET(); } _tos_cache0 = value; SET_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_TOS_OVERFLOWED_r22: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef value; _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; @@ -3176,19 +3315,21 @@ assert(Py_TYPE(value_o) == &PyLong_Type); if (!_PyLong_IsCompact((PyLongObject *)value_o)) { UOP_STAT_INC(uopcode, miss); + _tos_cache1 = value; + _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(2); JUMP_TO_JUMP_TARGET(); } _tos_cache1 = value; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_TOS_OVERFLOWED_r33: { CHECK_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef value; _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; @@ -3198,6 +3339,9 @@ assert(Py_TYPE(value_o) == &PyLong_Type); if (!_PyLong_IsCompact((PyLongObject *)value_o)) { UOP_STAT_INC(uopcode, miss); + _tos_cache2 = value; + _tos_cache1 = _stack_item_1; + _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(3); JUMP_TO_JUMP_TARGET(); } @@ -3205,16 +3349,18 @@ _tos_cache1 = _stack_item_1; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } - case _BINARY_OP_MULTIPLY_INT_r01: { + case _BINARY_OP_MULTIPLY_INT_r03: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef right; _PyStackRef left; _PyStackRef res; + _PyStackRef l; + _PyStackRef r; right = stack_pointer[-1]; left = stack_pointer[-2]; PyObject *left_o = PyStackRef_AsPyObjectBorrow(left); @@ -3229,22 +3375,26 @@ SET_CURRENT_CACHED_VALUES(0); JUMP_TO_JUMP_TARGET(); } - PyStackRef_CLOSE_SPECIALIZED(right, _PyLong_ExactDealloc); - PyStackRef_CLOSE_SPECIALIZED(left, _PyLong_ExactDealloc); + l = left; + r = right; + _tos_cache2 = r; + _tos_cache1 = l; _tos_cache0 = res; - SET_CURRENT_CACHED_VALUES(1); + SET_CURRENT_CACHED_VALUES(3); stack_pointer += -2; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } - case _BINARY_OP_MULTIPLY_INT_r11: { + case _BINARY_OP_MULTIPLY_INT_r13: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef right; _PyStackRef left; _PyStackRef res; + _PyStackRef l; + _PyStackRef r; _PyStackRef _stack_item_0 = _tos_cache0; right = _stack_item_0; left = stack_pointer[-1]; @@ -3257,25 +3407,30 @@ res = _PyCompactLong_Multiply((PyLongObject *)left_o, (PyLongObject *)right_o); if (PyStackRef_IsNull(res)) { UOP_STAT_INC(uopcode, miss); + _tos_cache0 = right; SET_CURRENT_CACHED_VALUES(1); JUMP_TO_JUMP_TARGET(); } - PyStackRef_CLOSE_SPECIALIZED(right, _PyLong_ExactDealloc); - PyStackRef_CLOSE_SPECIALIZED(left, _PyLong_ExactDealloc); + l = left; + r = right; + _tos_cache2 = r; + _tos_cache1 = l; _tos_cache0 = res; - SET_CURRENT_CACHED_VALUES(1); + SET_CURRENT_CACHED_VALUES(3); stack_pointer += -1; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } - case _BINARY_OP_MULTIPLY_INT_r21: { + case _BINARY_OP_MULTIPLY_INT_r23: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef right; _PyStackRef left; _PyStackRef res; + _PyStackRef l; + _PyStackRef r; _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; right = _stack_item_1; @@ -3289,55 +3444,29 @@ res = _PyCompactLong_Multiply((PyLongObject *)left_o, (PyLongObject *)right_o); if (PyStackRef_IsNull(res)) { UOP_STAT_INC(uopcode, miss); + _tos_cache1 = right; + _tos_cache0 = left; SET_CURRENT_CACHED_VALUES(2); JUMP_TO_JUMP_TARGET(); } - PyStackRef_CLOSE_SPECIALIZED(right, _PyLong_ExactDealloc); - PyStackRef_CLOSE_SPECIALIZED(left, _PyLong_ExactDealloc); + l = left; + r = right; + _tos_cache2 = r; + _tos_cache1 = l; _tos_cache0 = res; - SET_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); - break; - } - - case _BINARY_OP_MULTIPLY_INT_r32: { - CHECK_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); - _PyStackRef right; - _PyStackRef left; - _PyStackRef res; - _PyStackRef _stack_item_0 = _tos_cache0; - _PyStackRef _stack_item_1 = _tos_cache1; - _PyStackRef _stack_item_2 = _tos_cache2; - right = _stack_item_2; - left = _stack_item_1; - PyObject *left_o = PyStackRef_AsPyObjectBorrow(left); - PyObject *right_o = PyStackRef_AsPyObjectBorrow(right); - assert(PyLong_CheckExact(left_o)); - assert(PyLong_CheckExact(right_o)); - assert(_PyLong_BothAreCompact((PyLongObject *)left_o, (PyLongObject *)right_o)); - STAT_INC(BINARY_OP, hit); - res = _PyCompactLong_Multiply((PyLongObject *)left_o, (PyLongObject *)right_o); - if (PyStackRef_IsNull(res)) { - UOP_STAT_INC(uopcode, miss); - SET_CURRENT_CACHED_VALUES(3); - JUMP_TO_JUMP_TARGET(); - } - PyStackRef_CLOSE_SPECIALIZED(right, _PyLong_ExactDealloc); - PyStackRef_CLOSE_SPECIALIZED(left, _PyLong_ExactDealloc); - _tos_cache1 = res; - _tos_cache0 = _stack_item_0; - SET_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + SET_CURRENT_CACHED_VALUES(3); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } - case _BINARY_OP_ADD_INT_r01: { + case _BINARY_OP_ADD_INT_r03: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef right; _PyStackRef left; _PyStackRef res; + _PyStackRef l; + _PyStackRef r; right = stack_pointer[-1]; left = stack_pointer[-2]; PyObject *left_o = PyStackRef_AsPyObjectBorrow(left); @@ -3352,22 +3481,26 @@ SET_CURRENT_CACHED_VALUES(0); JUMP_TO_JUMP_TARGET(); } - PyStackRef_CLOSE_SPECIALIZED(right, _PyLong_ExactDealloc); - PyStackRef_CLOSE_SPECIALIZED(left, _PyLong_ExactDealloc); + l = left; + r = right; + _tos_cache2 = r; + _tos_cache1 = l; _tos_cache0 = res; - SET_CURRENT_CACHED_VALUES(1); + SET_CURRENT_CACHED_VALUES(3); stack_pointer += -2; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } - case _BINARY_OP_ADD_INT_r11: { + case _BINARY_OP_ADD_INT_r13: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef right; _PyStackRef left; _PyStackRef res; + _PyStackRef l; + _PyStackRef r; _PyStackRef _stack_item_0 = _tos_cache0; right = _stack_item_0; left = stack_pointer[-1]; @@ -3380,25 +3513,30 @@ res = _PyCompactLong_Add((PyLongObject *)left_o, (PyLongObject *)right_o); if (PyStackRef_IsNull(res)) { UOP_STAT_INC(uopcode, miss); + _tos_cache0 = right; SET_CURRENT_CACHED_VALUES(1); JUMP_TO_JUMP_TARGET(); } - PyStackRef_CLOSE_SPECIALIZED(right, _PyLong_ExactDealloc); - PyStackRef_CLOSE_SPECIALIZED(left, _PyLong_ExactDealloc); + l = left; + r = right; + _tos_cache2 = r; + _tos_cache1 = l; _tos_cache0 = res; - SET_CURRENT_CACHED_VALUES(1); + SET_CURRENT_CACHED_VALUES(3); stack_pointer += -1; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } - case _BINARY_OP_ADD_INT_r21: { + case _BINARY_OP_ADD_INT_r23: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef right; _PyStackRef left; _PyStackRef res; + _PyStackRef l; + _PyStackRef r; _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; right = _stack_item_1; @@ -3412,55 +3550,29 @@ res = _PyCompactLong_Add((PyLongObject *)left_o, (PyLongObject *)right_o); if (PyStackRef_IsNull(res)) { UOP_STAT_INC(uopcode, miss); + _tos_cache1 = right; + _tos_cache0 = left; SET_CURRENT_CACHED_VALUES(2); JUMP_TO_JUMP_TARGET(); } - PyStackRef_CLOSE_SPECIALIZED(right, _PyLong_ExactDealloc); - PyStackRef_CLOSE_SPECIALIZED(left, _PyLong_ExactDealloc); + l = left; + r = right; + _tos_cache2 = r; + _tos_cache1 = l; _tos_cache0 = res; - SET_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); - break; - } - - case _BINARY_OP_ADD_INT_r32: { - CHECK_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); - _PyStackRef right; - _PyStackRef left; - _PyStackRef res; - _PyStackRef _stack_item_0 = _tos_cache0; - _PyStackRef _stack_item_1 = _tos_cache1; - _PyStackRef _stack_item_2 = _tos_cache2; - right = _stack_item_2; - left = _stack_item_1; - PyObject *left_o = PyStackRef_AsPyObjectBorrow(left); - PyObject *right_o = PyStackRef_AsPyObjectBorrow(right); - assert(PyLong_CheckExact(left_o)); - assert(PyLong_CheckExact(right_o)); - assert(_PyLong_BothAreCompact((PyLongObject *)left_o, (PyLongObject *)right_o)); - STAT_INC(BINARY_OP, hit); - res = _PyCompactLong_Add((PyLongObject *)left_o, (PyLongObject *)right_o); - if (PyStackRef_IsNull(res)) { - UOP_STAT_INC(uopcode, miss); - SET_CURRENT_CACHED_VALUES(3); - JUMP_TO_JUMP_TARGET(); - } - PyStackRef_CLOSE_SPECIALIZED(right, _PyLong_ExactDealloc); - PyStackRef_CLOSE_SPECIALIZED(left, _PyLong_ExactDealloc); - _tos_cache1 = res; - _tos_cache0 = _stack_item_0; - SET_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + SET_CURRENT_CACHED_VALUES(3); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } - case _BINARY_OP_SUBTRACT_INT_r01: { + case _BINARY_OP_SUBTRACT_INT_r03: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef right; _PyStackRef left; _PyStackRef res; + _PyStackRef l; + _PyStackRef r; right = stack_pointer[-1]; left = stack_pointer[-2]; PyObject *left_o = PyStackRef_AsPyObjectBorrow(left); @@ -3475,22 +3587,26 @@ SET_CURRENT_CACHED_VALUES(0); JUMP_TO_JUMP_TARGET(); } - PyStackRef_CLOSE_SPECIALIZED(right, _PyLong_ExactDealloc); - PyStackRef_CLOSE_SPECIALIZED(left, _PyLong_ExactDealloc); + l = left; + r = right; + _tos_cache2 = r; + _tos_cache1 = l; _tos_cache0 = res; - SET_CURRENT_CACHED_VALUES(1); + SET_CURRENT_CACHED_VALUES(3); stack_pointer += -2; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } - case _BINARY_OP_SUBTRACT_INT_r11: { + case _BINARY_OP_SUBTRACT_INT_r13: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef right; _PyStackRef left; _PyStackRef res; + _PyStackRef l; + _PyStackRef r; _PyStackRef _stack_item_0 = _tos_cache0; right = _stack_item_0; left = stack_pointer[-1]; @@ -3503,25 +3619,30 @@ res = _PyCompactLong_Subtract((PyLongObject *)left_o, (PyLongObject *)right_o); if (PyStackRef_IsNull(res)) { UOP_STAT_INC(uopcode, miss); + _tos_cache0 = right; SET_CURRENT_CACHED_VALUES(1); JUMP_TO_JUMP_TARGET(); } - PyStackRef_CLOSE_SPECIALIZED(right, _PyLong_ExactDealloc); - PyStackRef_CLOSE_SPECIALIZED(left, _PyLong_ExactDealloc); + l = left; + r = right; + _tos_cache2 = r; + _tos_cache1 = l; _tos_cache0 = res; - SET_CURRENT_CACHED_VALUES(1); + SET_CURRENT_CACHED_VALUES(3); stack_pointer += -1; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } - case _BINARY_OP_SUBTRACT_INT_r21: { + case _BINARY_OP_SUBTRACT_INT_r23: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef right; _PyStackRef left; _PyStackRef res; + _PyStackRef l; + _PyStackRef r; _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; right = _stack_item_1; @@ -3535,52 +3656,24 @@ res = _PyCompactLong_Subtract((PyLongObject *)left_o, (PyLongObject *)right_o); if (PyStackRef_IsNull(res)) { UOP_STAT_INC(uopcode, miss); + _tos_cache1 = right; + _tos_cache0 = left; SET_CURRENT_CACHED_VALUES(2); JUMP_TO_JUMP_TARGET(); } - PyStackRef_CLOSE_SPECIALIZED(right, _PyLong_ExactDealloc); - PyStackRef_CLOSE_SPECIALIZED(left, _PyLong_ExactDealloc); + l = left; + r = right; + _tos_cache2 = r; + _tos_cache1 = l; _tos_cache0 = res; - SET_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); - break; - } - - case _BINARY_OP_SUBTRACT_INT_r32: { - CHECK_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); - _PyStackRef right; - _PyStackRef left; - _PyStackRef res; - _PyStackRef _stack_item_0 = _tos_cache0; - _PyStackRef _stack_item_1 = _tos_cache1; - _PyStackRef _stack_item_2 = _tos_cache2; - right = _stack_item_2; - left = _stack_item_1; - PyObject *left_o = PyStackRef_AsPyObjectBorrow(left); - PyObject *right_o = PyStackRef_AsPyObjectBorrow(right); - assert(PyLong_CheckExact(left_o)); - assert(PyLong_CheckExact(right_o)); - assert(_PyLong_BothAreCompact((PyLongObject *)left_o, (PyLongObject *)right_o)); - STAT_INC(BINARY_OP, hit); - res = _PyCompactLong_Subtract((PyLongObject *)left_o, (PyLongObject *)right_o); - if (PyStackRef_IsNull(res)) { - UOP_STAT_INC(uopcode, miss); - SET_CURRENT_CACHED_VALUES(3); - JUMP_TO_JUMP_TARGET(); - } - PyStackRef_CLOSE_SPECIALIZED(right, _PyLong_ExactDealloc); - PyStackRef_CLOSE_SPECIALIZED(left, _PyLong_ExactDealloc); - _tos_cache1 = res; - _tos_cache0 = _stack_item_0; - SET_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + SET_CURRENT_CACHED_VALUES(3); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_NOS_FLOAT_r02: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef left; left = stack_pointer[-2]; PyObject *left_o = PyStackRef_AsPyObjectBorrow(left); @@ -3594,19 +3687,20 @@ SET_CURRENT_CACHED_VALUES(2); stack_pointer += -2; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_NOS_FLOAT_r12: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef left; _PyStackRef _stack_item_0 = _tos_cache0; left = stack_pointer[-1]; PyObject *left_o = PyStackRef_AsPyObjectBorrow(left); if (!PyFloat_CheckExact(left_o)) { UOP_STAT_INC(uopcode, miss); + _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(1); JUMP_TO_JUMP_TARGET(); } @@ -3615,13 +3709,13 @@ SET_CURRENT_CACHED_VALUES(2); stack_pointer += -1; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_NOS_FLOAT_r22: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef left; _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; @@ -3629,19 +3723,21 @@ PyObject *left_o = PyStackRef_AsPyObjectBorrow(left); if (!PyFloat_CheckExact(left_o)) { UOP_STAT_INC(uopcode, miss); + _tos_cache1 = _stack_item_1; + _tos_cache0 = left; SET_CURRENT_CACHED_VALUES(2); JUMP_TO_JUMP_TARGET(); } _tos_cache1 = _stack_item_1; _tos_cache0 = left; SET_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_NOS_FLOAT_r33: { CHECK_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef left; _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; @@ -3650,6 +3746,9 @@ PyObject *left_o = PyStackRef_AsPyObjectBorrow(left); if (!PyFloat_CheckExact(left_o)) { UOP_STAT_INC(uopcode, miss); + _tos_cache2 = _stack_item_2; + _tos_cache1 = left; + _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(3); JUMP_TO_JUMP_TARGET(); } @@ -3657,13 +3756,13 @@ _tos_cache1 = left; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_TOS_FLOAT_r01: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef value; value = stack_pointer[-1]; PyObject *value_o = PyStackRef_AsPyObjectBorrow(value); @@ -3676,31 +3775,32 @@ SET_CURRENT_CACHED_VALUES(1); stack_pointer += -1; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_TOS_FLOAT_r11: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef value; _PyStackRef _stack_item_0 = _tos_cache0; value = _stack_item_0; PyObject *value_o = PyStackRef_AsPyObjectBorrow(value); if (!PyFloat_CheckExact(value_o)) { UOP_STAT_INC(uopcode, miss); + _tos_cache0 = value; SET_CURRENT_CACHED_VALUES(1); JUMP_TO_JUMP_TARGET(); } _tos_cache0 = value; SET_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_TOS_FLOAT_r22: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef value; _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; @@ -3708,19 +3808,21 @@ PyObject *value_o = PyStackRef_AsPyObjectBorrow(value); if (!PyFloat_CheckExact(value_o)) { UOP_STAT_INC(uopcode, miss); + _tos_cache1 = value; + _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(2); JUMP_TO_JUMP_TARGET(); } _tos_cache1 = value; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_TOS_FLOAT_r33: { CHECK_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef value; _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; @@ -3729,6 +3831,9 @@ PyObject *value_o = PyStackRef_AsPyObjectBorrow(value); if (!PyFloat_CheckExact(value_o)) { UOP_STAT_INC(uopcode, miss); + _tos_cache2 = value; + _tos_cache1 = _stack_item_1; + _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(3); JUMP_TO_JUMP_TARGET(); } @@ -3736,16 +3841,18 @@ _tos_cache1 = _stack_item_1; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } - case _BINARY_OP_MULTIPLY_FLOAT_r01: { + case _BINARY_OP_MULTIPLY_FLOAT_r03: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef right; _PyStackRef left; _PyStackRef res; + _PyStackRef l; + _PyStackRef r; right = stack_pointer[-1]; left = stack_pointer[-2]; PyObject *left_o = PyStackRef_AsPyObjectBorrow(left); @@ -3756,28 +3863,31 @@ double dres = ((PyFloatObject *)left_o)->ob_fval * ((PyFloatObject *)right_o)->ob_fval; - res = _PyFloat_FromDouble_ConsumeInputs(left, right, dres); + res = PyStackRef_FromPyObjectSteal(PyFloat_FromDouble(dres)); if (PyStackRef_IsNull(res)) { - stack_pointer[-2] = res; - stack_pointer += -1; - ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); SET_CURRENT_CACHED_VALUES(0); JUMP_TO_ERROR(); } + l = left; + r = right; + _tos_cache2 = r; + _tos_cache1 = l; _tos_cache0 = res; - SET_CURRENT_CACHED_VALUES(1); + SET_CURRENT_CACHED_VALUES(3); stack_pointer += -2; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } - case _BINARY_OP_MULTIPLY_FLOAT_r11: { + case _BINARY_OP_MULTIPLY_FLOAT_r13: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef right; _PyStackRef left; _PyStackRef res; + _PyStackRef l; + _PyStackRef r; _PyStackRef _stack_item_0 = _tos_cache0; right = _stack_item_0; left = stack_pointer[-1]; @@ -3789,26 +3899,34 @@ double dres = ((PyFloatObject *)left_o)->ob_fval * ((PyFloatObject *)right_o)->ob_fval; - res = _PyFloat_FromDouble_ConsumeInputs(left, right, dres); + res = PyStackRef_FromPyObjectSteal(PyFloat_FromDouble(dres)); if (PyStackRef_IsNull(res)) { - stack_pointer[-1] = res; + stack_pointer[0] = right; + stack_pointer += 1; + ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); SET_CURRENT_CACHED_VALUES(0); JUMP_TO_ERROR(); } + l = left; + r = right; + _tos_cache2 = r; + _tos_cache1 = l; _tos_cache0 = res; - SET_CURRENT_CACHED_VALUES(1); + SET_CURRENT_CACHED_VALUES(3); stack_pointer += -1; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } - case _BINARY_OP_MULTIPLY_FLOAT_r21: { + case _BINARY_OP_MULTIPLY_FLOAT_r23: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef right; _PyStackRef left; _PyStackRef res; + _PyStackRef l; + _PyStackRef r; _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; right = _stack_item_1; @@ -3821,58 +3939,33 @@ double dres = ((PyFloatObject *)left_o)->ob_fval * ((PyFloatObject *)right_o)->ob_fval; - res = _PyFloat_FromDouble_ConsumeInputs(left, right, dres); - if (PyStackRef_IsNull(res)) { - SET_CURRENT_CACHED_VALUES(0); - JUMP_TO_ERROR(); - } - _tos_cache0 = res; - SET_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); - break; - } - - case _BINARY_OP_MULTIPLY_FLOAT_r32: { - CHECK_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); - _PyStackRef right; - _PyStackRef left; - _PyStackRef res; - _PyStackRef _stack_item_0 = _tos_cache0; - _PyStackRef _stack_item_1 = _tos_cache1; - _PyStackRef _stack_item_2 = _tos_cache2; - right = _stack_item_2; - left = _stack_item_1; - PyObject *left_o = PyStackRef_AsPyObjectBorrow(left); - PyObject *right_o = PyStackRef_AsPyObjectBorrow(right); - assert(PyFloat_CheckExact(left_o)); - assert(PyFloat_CheckExact(right_o)); - STAT_INC(BINARY_OP, hit); - double dres = - ((PyFloatObject *)left_o)->ob_fval * - ((PyFloatObject *)right_o)->ob_fval; - res = _PyFloat_FromDouble_ConsumeInputs(left, right, dres); + res = PyStackRef_FromPyObjectSteal(PyFloat_FromDouble(dres)); if (PyStackRef_IsNull(res)) { - stack_pointer[0] = _stack_item_0; - stack_pointer[1] = res; + stack_pointer[0] = left; + stack_pointer[1] = right; stack_pointer += 2; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); SET_CURRENT_CACHED_VALUES(0); JUMP_TO_ERROR(); } - _tos_cache1 = res; - _tos_cache0 = _stack_item_0; - SET_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + l = left; + r = right; + _tos_cache2 = r; + _tos_cache1 = l; + _tos_cache0 = res; + SET_CURRENT_CACHED_VALUES(3); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } - case _BINARY_OP_ADD_FLOAT_r01: { + case _BINARY_OP_ADD_FLOAT_r03: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef right; _PyStackRef left; _PyStackRef res; + _PyStackRef l; + _PyStackRef r; right = stack_pointer[-1]; left = stack_pointer[-2]; PyObject *left_o = PyStackRef_AsPyObjectBorrow(left); @@ -3883,28 +3976,31 @@ double dres = ((PyFloatObject *)left_o)->ob_fval + ((PyFloatObject *)right_o)->ob_fval; - res = _PyFloat_FromDouble_ConsumeInputs(left, right, dres); + res = PyStackRef_FromPyObjectSteal(PyFloat_FromDouble(dres)); if (PyStackRef_IsNull(res)) { - stack_pointer[-2] = res; - stack_pointer += -1; - ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); SET_CURRENT_CACHED_VALUES(0); JUMP_TO_ERROR(); } + l = left; + r = right; + _tos_cache2 = r; + _tos_cache1 = l; _tos_cache0 = res; - SET_CURRENT_CACHED_VALUES(1); + SET_CURRENT_CACHED_VALUES(3); stack_pointer += -2; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } - case _BINARY_OP_ADD_FLOAT_r11: { + case _BINARY_OP_ADD_FLOAT_r13: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef right; _PyStackRef left; _PyStackRef res; + _PyStackRef l; + _PyStackRef r; _PyStackRef _stack_item_0 = _tos_cache0; right = _stack_item_0; left = stack_pointer[-1]; @@ -3916,407 +4012,34 @@ double dres = ((PyFloatObject *)left_o)->ob_fval + ((PyFloatObject *)right_o)->ob_fval; - res = _PyFloat_FromDouble_ConsumeInputs(left, right, dres); + res = PyStackRef_FromPyObjectSteal(PyFloat_FromDouble(dres)); if (PyStackRef_IsNull(res)) { - stack_pointer[-1] = res; - SET_CURRENT_CACHED_VALUES(0); - JUMP_TO_ERROR(); - } - _tos_cache0 = res; - SET_CURRENT_CACHED_VALUES(1); - stack_pointer += -1; - ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); - break; - } - - case _BINARY_OP_ADD_FLOAT_r21: { - CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); - _PyStackRef right; - _PyStackRef left; - _PyStackRef res; - _PyStackRef _stack_item_0 = _tos_cache0; - _PyStackRef _stack_item_1 = _tos_cache1; - right = _stack_item_1; - left = _stack_item_0; - PyObject *left_o = PyStackRef_AsPyObjectBorrow(left); - PyObject *right_o = PyStackRef_AsPyObjectBorrow(right); - assert(PyFloat_CheckExact(left_o)); - assert(PyFloat_CheckExact(right_o)); - STAT_INC(BINARY_OP, hit); - double dres = - ((PyFloatObject *)left_o)->ob_fval + - ((PyFloatObject *)right_o)->ob_fval; - res = _PyFloat_FromDouble_ConsumeInputs(left, right, dres); - if (PyStackRef_IsNull(res)) { - SET_CURRENT_CACHED_VALUES(0); - JUMP_TO_ERROR(); - } - _tos_cache0 = res; - SET_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); - break; - } - - case _BINARY_OP_ADD_FLOAT_r32: { - CHECK_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); - _PyStackRef right; - _PyStackRef left; - _PyStackRef res; - _PyStackRef _stack_item_0 = _tos_cache0; - _PyStackRef _stack_item_1 = _tos_cache1; - _PyStackRef _stack_item_2 = _tos_cache2; - right = _stack_item_2; - left = _stack_item_1; - PyObject *left_o = PyStackRef_AsPyObjectBorrow(left); - PyObject *right_o = PyStackRef_AsPyObjectBorrow(right); - assert(PyFloat_CheckExact(left_o)); - assert(PyFloat_CheckExact(right_o)); - STAT_INC(BINARY_OP, hit); - double dres = - ((PyFloatObject *)left_o)->ob_fval + - ((PyFloatObject *)right_o)->ob_fval; - res = _PyFloat_FromDouble_ConsumeInputs(left, right, dres); - if (PyStackRef_IsNull(res)) { - stack_pointer[0] = _stack_item_0; - stack_pointer[1] = res; - stack_pointer += 2; - ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - SET_CURRENT_CACHED_VALUES(0); - JUMP_TO_ERROR(); - } - _tos_cache1 = res; - _tos_cache0 = _stack_item_0; - SET_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); - break; - } - - case _BINARY_OP_SUBTRACT_FLOAT_r01: { - CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); - _PyStackRef right; - _PyStackRef left; - _PyStackRef res; - right = stack_pointer[-1]; - left = stack_pointer[-2]; - PyObject *left_o = PyStackRef_AsPyObjectBorrow(left); - PyObject *right_o = PyStackRef_AsPyObjectBorrow(right); - assert(PyFloat_CheckExact(left_o)); - assert(PyFloat_CheckExact(right_o)); - STAT_INC(BINARY_OP, hit); - double dres = - ((PyFloatObject *)left_o)->ob_fval - - ((PyFloatObject *)right_o)->ob_fval; - res = _PyFloat_FromDouble_ConsumeInputs(left, right, dres); - if (PyStackRef_IsNull(res)) { - stack_pointer[-2] = res; - stack_pointer += -1; - ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - SET_CURRENT_CACHED_VALUES(0); - JUMP_TO_ERROR(); - } - _tos_cache0 = res; - SET_CURRENT_CACHED_VALUES(1); - stack_pointer += -2; - ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); - break; - } - - case _BINARY_OP_SUBTRACT_FLOAT_r11: { - CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); - _PyStackRef right; - _PyStackRef left; - _PyStackRef res; - _PyStackRef _stack_item_0 = _tos_cache0; - right = _stack_item_0; - left = stack_pointer[-1]; - PyObject *left_o = PyStackRef_AsPyObjectBorrow(left); - PyObject *right_o = PyStackRef_AsPyObjectBorrow(right); - assert(PyFloat_CheckExact(left_o)); - assert(PyFloat_CheckExact(right_o)); - STAT_INC(BINARY_OP, hit); - double dres = - ((PyFloatObject *)left_o)->ob_fval - - ((PyFloatObject *)right_o)->ob_fval; - res = _PyFloat_FromDouble_ConsumeInputs(left, right, dres); - if (PyStackRef_IsNull(res)) { - stack_pointer[-1] = res; - SET_CURRENT_CACHED_VALUES(0); - JUMP_TO_ERROR(); - } - _tos_cache0 = res; - SET_CURRENT_CACHED_VALUES(1); - stack_pointer += -1; - ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); - break; - } - - case _BINARY_OP_SUBTRACT_FLOAT_r21: { - CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); - _PyStackRef right; - _PyStackRef left; - _PyStackRef res; - _PyStackRef _stack_item_0 = _tos_cache0; - _PyStackRef _stack_item_1 = _tos_cache1; - right = _stack_item_1; - left = _stack_item_0; - PyObject *left_o = PyStackRef_AsPyObjectBorrow(left); - PyObject *right_o = PyStackRef_AsPyObjectBorrow(right); - assert(PyFloat_CheckExact(left_o)); - assert(PyFloat_CheckExact(right_o)); - STAT_INC(BINARY_OP, hit); - double dres = - ((PyFloatObject *)left_o)->ob_fval - - ((PyFloatObject *)right_o)->ob_fval; - res = _PyFloat_FromDouble_ConsumeInputs(left, right, dres); - if (PyStackRef_IsNull(res)) { - SET_CURRENT_CACHED_VALUES(0); - JUMP_TO_ERROR(); - } - _tos_cache0 = res; - SET_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); - break; - } - - case _BINARY_OP_SUBTRACT_FLOAT_r32: { - CHECK_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); - _PyStackRef right; - _PyStackRef left; - _PyStackRef res; - _PyStackRef _stack_item_0 = _tos_cache0; - _PyStackRef _stack_item_1 = _tos_cache1; - _PyStackRef _stack_item_2 = _tos_cache2; - right = _stack_item_2; - left = _stack_item_1; - PyObject *left_o = PyStackRef_AsPyObjectBorrow(left); - PyObject *right_o = PyStackRef_AsPyObjectBorrow(right); - assert(PyFloat_CheckExact(left_o)); - assert(PyFloat_CheckExact(right_o)); - STAT_INC(BINARY_OP, hit); - double dres = - ((PyFloatObject *)left_o)->ob_fval - - ((PyFloatObject *)right_o)->ob_fval; - res = _PyFloat_FromDouble_ConsumeInputs(left, right, dres); - if (PyStackRef_IsNull(res)) { - stack_pointer[0] = _stack_item_0; - stack_pointer[1] = res; - stack_pointer += 2; - ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - SET_CURRENT_CACHED_VALUES(0); - JUMP_TO_ERROR(); - } - _tos_cache1 = res; - _tos_cache0 = _stack_item_0; - SET_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); - break; - } - - case _BINARY_OP_MULTIPLY_FLOAT__NO_DECREF_INPUTS_r01: { - CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); - _PyStackRef right; - _PyStackRef left; - _PyStackRef res; - right = stack_pointer[-1]; - left = stack_pointer[-2]; - PyObject *left_o = PyStackRef_AsPyObjectBorrow(left); - PyObject *right_o = PyStackRef_AsPyObjectBorrow(right); - assert(PyFloat_CheckExact(left_o)); - assert(PyFloat_CheckExact(right_o)); - STAT_INC(BINARY_OP, hit); - double dres = - ((PyFloatObject *)left_o)->ob_fval * - ((PyFloatObject *)right_o)->ob_fval; - res = PyStackRef_FromPyObjectSteal(PyFloat_FromDouble(dres)); - if (PyStackRef_IsNull(res)) { - stack_pointer[-2] = res; - stack_pointer += -1; - ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - SET_CURRENT_CACHED_VALUES(0); - JUMP_TO_ERROR(); - } - _tos_cache0 = res; - SET_CURRENT_CACHED_VALUES(1); - stack_pointer += -2; - ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); - break; - } - - case _BINARY_OP_MULTIPLY_FLOAT__NO_DECREF_INPUTS_r11: { - CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); - _PyStackRef right; - _PyStackRef left; - _PyStackRef res; - _PyStackRef _stack_item_0 = _tos_cache0; - right = _stack_item_0; - left = stack_pointer[-1]; - PyObject *left_o = PyStackRef_AsPyObjectBorrow(left); - PyObject *right_o = PyStackRef_AsPyObjectBorrow(right); - assert(PyFloat_CheckExact(left_o)); - assert(PyFloat_CheckExact(right_o)); - STAT_INC(BINARY_OP, hit); - double dres = - ((PyFloatObject *)left_o)->ob_fval * - ((PyFloatObject *)right_o)->ob_fval; - res = PyStackRef_FromPyObjectSteal(PyFloat_FromDouble(dres)); - if (PyStackRef_IsNull(res)) { - stack_pointer[-1] = res; - SET_CURRENT_CACHED_VALUES(0); - JUMP_TO_ERROR(); - } - _tos_cache0 = res; - SET_CURRENT_CACHED_VALUES(1); - stack_pointer += -1; - ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); - break; - } - - case _BINARY_OP_MULTIPLY_FLOAT__NO_DECREF_INPUTS_r21: { - CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); - _PyStackRef right; - _PyStackRef left; - _PyStackRef res; - _PyStackRef _stack_item_0 = _tos_cache0; - _PyStackRef _stack_item_1 = _tos_cache1; - right = _stack_item_1; - left = _stack_item_0; - PyObject *left_o = PyStackRef_AsPyObjectBorrow(left); - PyObject *right_o = PyStackRef_AsPyObjectBorrow(right); - assert(PyFloat_CheckExact(left_o)); - assert(PyFloat_CheckExact(right_o)); - STAT_INC(BINARY_OP, hit); - double dres = - ((PyFloatObject *)left_o)->ob_fval * - ((PyFloatObject *)right_o)->ob_fval; - res = PyStackRef_FromPyObjectSteal(PyFloat_FromDouble(dres)); - if (PyStackRef_IsNull(res)) { - SET_CURRENT_CACHED_VALUES(0); - JUMP_TO_ERROR(); - } - _tos_cache0 = res; - SET_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); - break; - } - - case _BINARY_OP_MULTIPLY_FLOAT__NO_DECREF_INPUTS_r32: { - CHECK_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); - _PyStackRef right; - _PyStackRef left; - _PyStackRef res; - _PyStackRef _stack_item_0 = _tos_cache0; - _PyStackRef _stack_item_1 = _tos_cache1; - _PyStackRef _stack_item_2 = _tos_cache2; - right = _stack_item_2; - left = _stack_item_1; - PyObject *left_o = PyStackRef_AsPyObjectBorrow(left); - PyObject *right_o = PyStackRef_AsPyObjectBorrow(right); - assert(PyFloat_CheckExact(left_o)); - assert(PyFloat_CheckExact(right_o)); - STAT_INC(BINARY_OP, hit); - double dres = - ((PyFloatObject *)left_o)->ob_fval * - ((PyFloatObject *)right_o)->ob_fval; - res = PyStackRef_FromPyObjectSteal(PyFloat_FromDouble(dres)); - if (PyStackRef_IsNull(res)) { - stack_pointer[0] = _stack_item_0; - stack_pointer[1] = res; - stack_pointer += 2; - ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - SET_CURRENT_CACHED_VALUES(0); - JUMP_TO_ERROR(); - } - _tos_cache1 = res; - _tos_cache0 = _stack_item_0; - SET_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); - break; - } - - case _BINARY_OP_ADD_FLOAT__NO_DECREF_INPUTS_r01: { - CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); - _PyStackRef right; - _PyStackRef left; - _PyStackRef res; - right = stack_pointer[-1]; - left = stack_pointer[-2]; - PyObject *left_o = PyStackRef_AsPyObjectBorrow(left); - PyObject *right_o = PyStackRef_AsPyObjectBorrow(right); - assert(PyFloat_CheckExact(left_o)); - assert(PyFloat_CheckExact(right_o)); - STAT_INC(BINARY_OP, hit); - double dres = - ((PyFloatObject *)left_o)->ob_fval + - ((PyFloatObject *)right_o)->ob_fval; - res = PyStackRef_FromPyObjectSteal(PyFloat_FromDouble(dres)); - if (PyStackRef_IsNull(res)) { - stack_pointer[-2] = res; - stack_pointer += -1; + stack_pointer[0] = right; + stack_pointer += 1; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); SET_CURRENT_CACHED_VALUES(0); JUMP_TO_ERROR(); } + l = left; + r = right; + _tos_cache2 = r; + _tos_cache1 = l; _tos_cache0 = res; - SET_CURRENT_CACHED_VALUES(1); - stack_pointer += -2; - ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); - break; - } - - case _BINARY_OP_ADD_FLOAT__NO_DECREF_INPUTS_r11: { - CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); - _PyStackRef right; - _PyStackRef left; - _PyStackRef res; - _PyStackRef _stack_item_0 = _tos_cache0; - right = _stack_item_0; - left = stack_pointer[-1]; - PyObject *left_o = PyStackRef_AsPyObjectBorrow(left); - PyObject *right_o = PyStackRef_AsPyObjectBorrow(right); - assert(PyFloat_CheckExact(left_o)); - assert(PyFloat_CheckExact(right_o)); - STAT_INC(BINARY_OP, hit); - double dres = - ((PyFloatObject *)left_o)->ob_fval + - ((PyFloatObject *)right_o)->ob_fval; - res = PyStackRef_FromPyObjectSteal(PyFloat_FromDouble(dres)); - if (PyStackRef_IsNull(res)) { - stack_pointer[-1] = res; - SET_CURRENT_CACHED_VALUES(0); - JUMP_TO_ERROR(); - } - _tos_cache0 = res; - SET_CURRENT_CACHED_VALUES(1); + SET_CURRENT_CACHED_VALUES(3); stack_pointer += -1; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } - case _BINARY_OP_ADD_FLOAT__NO_DECREF_INPUTS_r21: { + case _BINARY_OP_ADD_FLOAT_r23: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef right; _PyStackRef left; _PyStackRef res; + _PyStackRef l; + _PyStackRef r; _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; right = _stack_item_1; @@ -4331,56 +4054,31 @@ ((PyFloatObject *)right_o)->ob_fval; res = PyStackRef_FromPyObjectSteal(PyFloat_FromDouble(dres)); if (PyStackRef_IsNull(res)) { - SET_CURRENT_CACHED_VALUES(0); - JUMP_TO_ERROR(); - } - _tos_cache0 = res; - SET_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); - break; - } - - case _BINARY_OP_ADD_FLOAT__NO_DECREF_INPUTS_r32: { - CHECK_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); - _PyStackRef right; - _PyStackRef left; - _PyStackRef res; - _PyStackRef _stack_item_0 = _tos_cache0; - _PyStackRef _stack_item_1 = _tos_cache1; - _PyStackRef _stack_item_2 = _tos_cache2; - right = _stack_item_2; - left = _stack_item_1; - PyObject *left_o = PyStackRef_AsPyObjectBorrow(left); - PyObject *right_o = PyStackRef_AsPyObjectBorrow(right); - assert(PyFloat_CheckExact(left_o)); - assert(PyFloat_CheckExact(right_o)); - STAT_INC(BINARY_OP, hit); - double dres = - ((PyFloatObject *)left_o)->ob_fval + - ((PyFloatObject *)right_o)->ob_fval; - res = PyStackRef_FromPyObjectSteal(PyFloat_FromDouble(dres)); - if (PyStackRef_IsNull(res)) { - stack_pointer[0] = _stack_item_0; - stack_pointer[1] = res; + stack_pointer[0] = left; + stack_pointer[1] = right; stack_pointer += 2; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); SET_CURRENT_CACHED_VALUES(0); JUMP_TO_ERROR(); } - _tos_cache1 = res; - _tos_cache0 = _stack_item_0; - SET_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + l = left; + r = right; + _tos_cache2 = r; + _tos_cache1 = l; + _tos_cache0 = res; + SET_CURRENT_CACHED_VALUES(3); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } - case _BINARY_OP_SUBTRACT_FLOAT__NO_DECREF_INPUTS_r01: { + case _BINARY_OP_SUBTRACT_FLOAT_r03: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef right; _PyStackRef left; _PyStackRef res; + _PyStackRef l; + _PyStackRef r; right = stack_pointer[-1]; left = stack_pointer[-2]; PyObject *left_o = PyStackRef_AsPyObjectBorrow(left); @@ -4393,26 +4091,29 @@ ((PyFloatObject *)right_o)->ob_fval; res = PyStackRef_FromPyObjectSteal(PyFloat_FromDouble(dres)); if (PyStackRef_IsNull(res)) { - stack_pointer[-2] = res; - stack_pointer += -1; - ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); SET_CURRENT_CACHED_VALUES(0); JUMP_TO_ERROR(); } + l = left; + r = right; + _tos_cache2 = r; + _tos_cache1 = l; _tos_cache0 = res; - SET_CURRENT_CACHED_VALUES(1); + SET_CURRENT_CACHED_VALUES(3); stack_pointer += -2; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } - case _BINARY_OP_SUBTRACT_FLOAT__NO_DECREF_INPUTS_r11: { + case _BINARY_OP_SUBTRACT_FLOAT_r13: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef right; _PyStackRef left; _PyStackRef res; + _PyStackRef l; + _PyStackRef r; _PyStackRef _stack_item_0 = _tos_cache0; right = _stack_item_0; left = stack_pointer[-1]; @@ -4426,24 +4127,32 @@ ((PyFloatObject *)right_o)->ob_fval; res = PyStackRef_FromPyObjectSteal(PyFloat_FromDouble(dres)); if (PyStackRef_IsNull(res)) { - stack_pointer[-1] = res; + stack_pointer[0] = right; + stack_pointer += 1; + ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); SET_CURRENT_CACHED_VALUES(0); JUMP_TO_ERROR(); } + l = left; + r = right; + _tos_cache2 = r; + _tos_cache1 = l; _tos_cache0 = res; - SET_CURRENT_CACHED_VALUES(1); + SET_CURRENT_CACHED_VALUES(3); stack_pointer += -1; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } - case _BINARY_OP_SUBTRACT_FLOAT__NO_DECREF_INPUTS_r21: { + case _BINARY_OP_SUBTRACT_FLOAT_r23: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef right; _PyStackRef left; _PyStackRef res; + _PyStackRef l; + _PyStackRef r; _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; right = _stack_item_1; @@ -4458,53 +4167,26 @@ ((PyFloatObject *)right_o)->ob_fval; res = PyStackRef_FromPyObjectSteal(PyFloat_FromDouble(dres)); if (PyStackRef_IsNull(res)) { - SET_CURRENT_CACHED_VALUES(0); - JUMP_TO_ERROR(); - } - _tos_cache0 = res; - SET_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); - break; - } - - case _BINARY_OP_SUBTRACT_FLOAT__NO_DECREF_INPUTS_r32: { - CHECK_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); - _PyStackRef right; - _PyStackRef left; - _PyStackRef res; - _PyStackRef _stack_item_0 = _tos_cache0; - _PyStackRef _stack_item_1 = _tos_cache1; - _PyStackRef _stack_item_2 = _tos_cache2; - right = _stack_item_2; - left = _stack_item_1; - PyObject *left_o = PyStackRef_AsPyObjectBorrow(left); - PyObject *right_o = PyStackRef_AsPyObjectBorrow(right); - assert(PyFloat_CheckExact(left_o)); - assert(PyFloat_CheckExact(right_o)); - STAT_INC(BINARY_OP, hit); - double dres = - ((PyFloatObject *)left_o)->ob_fval - - ((PyFloatObject *)right_o)->ob_fval; - res = PyStackRef_FromPyObjectSteal(PyFloat_FromDouble(dres)); - if (PyStackRef_IsNull(res)) { - stack_pointer[0] = _stack_item_0; - stack_pointer[1] = res; + stack_pointer[0] = left; + stack_pointer[1] = right; stack_pointer += 2; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); SET_CURRENT_CACHED_VALUES(0); JUMP_TO_ERROR(); } - _tos_cache1 = res; - _tos_cache0 = _stack_item_0; - SET_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + l = left; + r = right; + _tos_cache2 = r; + _tos_cache1 = l; + _tos_cache0 = res; + SET_CURRENT_CACHED_VALUES(3); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _BINARY_OP_ADD_UNICODE_r01: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef right; _PyStackRef left; _PyStackRef res; @@ -4529,13 +4211,13 @@ SET_CURRENT_CACHED_VALUES(1); stack_pointer += -2; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _BINARY_OP_ADD_UNICODE_r11: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef right; _PyStackRef left; _PyStackRef res; @@ -4561,13 +4243,13 @@ SET_CURRENT_CACHED_VALUES(1); stack_pointer += -1; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _BINARY_OP_ADD_UNICODE_r21: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef right; _PyStackRef left; _PyStackRef res; @@ -4590,13 +4272,13 @@ res = PyStackRef_FromPyObjectSteal(res_o); _tos_cache0 = res; SET_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _BINARY_OP_ADD_UNICODE_r32: { CHECK_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef right; _PyStackRef left; _PyStackRef res; @@ -4624,13 +4306,13 @@ _tos_cache1 = res; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _BINARY_OP_INPLACE_ADD_UNICODE_r20: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef right; _PyStackRef left; _PyStackRef _stack_item_0 = _tos_cache0; @@ -4651,7 +4333,9 @@ assert(PyUnicode_CheckExact(left_o)); if (PyStackRef_AsPyObjectBorrow(*target_local) != left_o) { UOP_STAT_INC(uopcode, miss); - SET_CURRENT_CACHED_VALUES(0); + _tos_cache1 = right; + _tos_cache0 = left; + SET_CURRENT_CACHED_VALUES(2); JUMP_TO_JUMP_TARGET(); } STAT_INC(BINARY_OP, hit); @@ -4679,13 +4363,13 @@ _tos_cache1 = PyStackRef_ZERO_BITS; _tos_cache2 = PyStackRef_ZERO_BITS; SET_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_BINARY_OP_EXTEND_r22: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef right; _PyStackRef left; _PyStackRef _stack_item_0 = _tos_cache0; @@ -4707,7 +4391,11 @@ stack_pointer = _PyFrame_GetStackPointer(frame); if (!res) { UOP_STAT_INC(uopcode, miss); - SET_CURRENT_CACHED_VALUES(0); + _tos_cache1 = right; + _tos_cache0 = left; + SET_CURRENT_CACHED_VALUES(2); + stack_pointer += -2; + ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); JUMP_TO_JUMP_TARGET(); } _tos_cache1 = right; @@ -4716,13 +4404,13 @@ SET_CURRENT_CACHED_VALUES(2); stack_pointer += -2; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _BINARY_OP_EXTEND_r21: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef right; _PyStackRef left; _PyStackRef res; @@ -4758,13 +4446,13 @@ _tos_cache1 = PyStackRef_ZERO_BITS; _tos_cache2 = PyStackRef_ZERO_BITS; SET_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _BINARY_SLICE_r31: { CHECK_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef stop; _PyStackRef start; _PyStackRef container; @@ -4811,13 +4499,13 @@ _tos_cache1 = PyStackRef_ZERO_BITS; _tos_cache2 = PyStackRef_ZERO_BITS; SET_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _STORE_SLICE_r30: { CHECK_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef stop; _PyStackRef start; _PyStackRef container; @@ -4871,13 +4559,13 @@ _tos_cache1 = PyStackRef_ZERO_BITS; _tos_cache2 = PyStackRef_ZERO_BITS; SET_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _BINARY_OP_SUBSCR_LIST_INT_r21: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef sub_st; _PyStackRef list_st; _PyStackRef res; @@ -4891,7 +4579,9 @@ assert(PyList_CheckExact(list)); if (!_PyLong_IsNonNegativeCompact((PyLongObject *)sub)) { UOP_STAT_INC(uopcode, miss); - SET_CURRENT_CACHED_VALUES(0); + _tos_cache1 = sub_st; + _tos_cache0 = list_st; + SET_CURRENT_CACHED_VALUES(2); JUMP_TO_JUMP_TARGET(); } Py_ssize_t index = ((PyLongObject*)sub)->long_value.ob_digit[0]; @@ -4905,7 +4595,11 @@ stack_pointer = _PyFrame_GetStackPointer(frame); if (res_o == NULL) { UOP_STAT_INC(uopcode, miss); - SET_CURRENT_CACHED_VALUES(0); + _tos_cache1 = sub_st; + _tos_cache0 = list_st; + SET_CURRENT_CACHED_VALUES(2); + stack_pointer += -2; + ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); JUMP_TO_JUMP_TARGET(); } STAT_INC(BINARY_OP, hit); @@ -4913,7 +4607,9 @@ #else if (index >= PyList_GET_SIZE(list)) { UOP_STAT_INC(uopcode, miss); - SET_CURRENT_CACHED_VALUES(0); + _tos_cache1 = sub_st; + _tos_cache0 = list_st; + SET_CURRENT_CACHED_VALUES(2); JUMP_TO_JUMP_TARGET(); } STAT_INC(BINARY_OP, hit); @@ -4941,13 +4637,13 @@ SET_CURRENT_CACHED_VALUES(1); stack_pointer += -1; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _BINARY_OP_SUBSCR_LIST_SLICE_r21: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef sub_st; _PyStackRef list_st; _PyStackRef res; @@ -4988,13 +4684,13 @@ _tos_cache1 = PyStackRef_ZERO_BITS; _tos_cache2 = PyStackRef_ZERO_BITS; SET_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _BINARY_OP_SUBSCR_STR_INT_r21: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef sub_st; _PyStackRef str_st; _PyStackRef res; @@ -5008,17 +4704,23 @@ assert(PyUnicode_CheckExact(str)); if (!_PyLong_IsNonNegativeCompact((PyLongObject *)sub)) { UOP_STAT_INC(uopcode, miss); + _tos_cache1 = sub_st; + _tos_cache0 = str_st; SET_CURRENT_CACHED_VALUES(2); JUMP_TO_JUMP_TARGET(); } Py_ssize_t index = ((PyLongObject*)sub)->long_value.ob_digit[0]; if (PyUnicode_GET_LENGTH(str) <= index) { UOP_STAT_INC(uopcode, miss); + _tos_cache1 = sub_st; + _tos_cache0 = str_st; SET_CURRENT_CACHED_VALUES(2); JUMP_TO_JUMP_TARGET(); } if (!PyUnicode_IS_COMPACT_ASCII(str)) { UOP_STAT_INC(uopcode, miss); + _tos_cache1 = sub_st; + _tos_cache0 = str_st; SET_CURRENT_CACHED_VALUES(2); JUMP_TO_JUMP_TARGET(); } @@ -5035,13 +4737,13 @@ _tos_cache1 = PyStackRef_ZERO_BITS; _tos_cache2 = PyStackRef_ZERO_BITS; SET_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_NOS_TUPLE_r02: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef nos; nos = stack_pointer[-2]; PyObject *o = PyStackRef_AsPyObjectBorrow(nos); @@ -5055,19 +4757,20 @@ SET_CURRENT_CACHED_VALUES(2); stack_pointer += -2; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_NOS_TUPLE_r12: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef nos; _PyStackRef _stack_item_0 = _tos_cache0; nos = stack_pointer[-1]; PyObject *o = PyStackRef_AsPyObjectBorrow(nos); if (!PyTuple_CheckExact(o)) { UOP_STAT_INC(uopcode, miss); + _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(1); JUMP_TO_JUMP_TARGET(); } @@ -5076,13 +4779,13 @@ SET_CURRENT_CACHED_VALUES(2); stack_pointer += -1; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_NOS_TUPLE_r22: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef nos; _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; @@ -5090,19 +4793,21 @@ PyObject *o = PyStackRef_AsPyObjectBorrow(nos); if (!PyTuple_CheckExact(o)) { UOP_STAT_INC(uopcode, miss); + _tos_cache1 = _stack_item_1; + _tos_cache0 = nos; SET_CURRENT_CACHED_VALUES(2); JUMP_TO_JUMP_TARGET(); } _tos_cache1 = _stack_item_1; _tos_cache0 = nos; SET_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_NOS_TUPLE_r33: { CHECK_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef nos; _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; @@ -5111,6 +4816,9 @@ PyObject *o = PyStackRef_AsPyObjectBorrow(nos); if (!PyTuple_CheckExact(o)) { UOP_STAT_INC(uopcode, miss); + _tos_cache2 = _stack_item_2; + _tos_cache1 = nos; + _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(3); JUMP_TO_JUMP_TARGET(); } @@ -5118,13 +4826,13 @@ _tos_cache1 = nos; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_TOS_TUPLE_r01: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef tos; tos = stack_pointer[-1]; PyObject *o = PyStackRef_AsPyObjectBorrow(tos); @@ -5137,31 +4845,32 @@ SET_CURRENT_CACHED_VALUES(1); stack_pointer += -1; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_TOS_TUPLE_r11: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef tos; _PyStackRef _stack_item_0 = _tos_cache0; tos = _stack_item_0; PyObject *o = PyStackRef_AsPyObjectBorrow(tos); if (!PyTuple_CheckExact(o)) { UOP_STAT_INC(uopcode, miss); + _tos_cache0 = tos; SET_CURRENT_CACHED_VALUES(1); JUMP_TO_JUMP_TARGET(); } _tos_cache0 = tos; SET_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_TOS_TUPLE_r22: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef tos; _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; @@ -5169,19 +4878,21 @@ PyObject *o = PyStackRef_AsPyObjectBorrow(tos); if (!PyTuple_CheckExact(o)) { UOP_STAT_INC(uopcode, miss); + _tos_cache1 = tos; + _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(2); JUMP_TO_JUMP_TARGET(); } _tos_cache1 = tos; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_TOS_TUPLE_r33: { CHECK_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef tos; _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; @@ -5190,6 +4901,9 @@ PyObject *o = PyStackRef_AsPyObjectBorrow(tos); if (!PyTuple_CheckExact(o)) { UOP_STAT_INC(uopcode, miss); + _tos_cache2 = tos; + _tos_cache1 = _stack_item_1; + _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(3); JUMP_TO_JUMP_TARGET(); } @@ -5197,13 +4911,13 @@ _tos_cache1 = _stack_item_1; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _BINARY_OP_SUBSCR_TUPLE_INT_r21: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef sub_st; _PyStackRef tuple_st; _PyStackRef res; @@ -5217,12 +4931,16 @@ assert(PyTuple_CheckExact(tuple)); if (!_PyLong_IsNonNegativeCompact((PyLongObject *)sub)) { UOP_STAT_INC(uopcode, miss); + _tos_cache1 = sub_st; + _tos_cache0 = tuple_st; SET_CURRENT_CACHED_VALUES(2); JUMP_TO_JUMP_TARGET(); } Py_ssize_t index = ((PyLongObject*)sub)->long_value.ob_digit[0]; if (index >= PyTuple_GET_SIZE(tuple)) { UOP_STAT_INC(uopcode, miss); + _tos_cache1 = sub_st; + _tos_cache0 = tuple_st; SET_CURRENT_CACHED_VALUES(2); JUMP_TO_JUMP_TARGET(); } @@ -5246,13 +4964,13 @@ SET_CURRENT_CACHED_VALUES(1); stack_pointer += -1; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_NOS_DICT_r02: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef nos; nos = stack_pointer[-2]; PyObject *o = PyStackRef_AsPyObjectBorrow(nos); @@ -5266,19 +4984,20 @@ SET_CURRENT_CACHED_VALUES(2); stack_pointer += -2; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_NOS_DICT_r12: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef nos; _PyStackRef _stack_item_0 = _tos_cache0; nos = stack_pointer[-1]; PyObject *o = PyStackRef_AsPyObjectBorrow(nos); if (!PyDict_CheckExact(o)) { UOP_STAT_INC(uopcode, miss); + _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(1); JUMP_TO_JUMP_TARGET(); } @@ -5287,13 +5006,13 @@ SET_CURRENT_CACHED_VALUES(2); stack_pointer += -1; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_NOS_DICT_r22: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef nos; _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; @@ -5301,19 +5020,21 @@ PyObject *o = PyStackRef_AsPyObjectBorrow(nos); if (!PyDict_CheckExact(o)) { UOP_STAT_INC(uopcode, miss); + _tos_cache1 = _stack_item_1; + _tos_cache0 = nos; SET_CURRENT_CACHED_VALUES(2); JUMP_TO_JUMP_TARGET(); } _tos_cache1 = _stack_item_1; _tos_cache0 = nos; SET_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_NOS_DICT_r33: { CHECK_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef nos; _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; @@ -5322,6 +5043,9 @@ PyObject *o = PyStackRef_AsPyObjectBorrow(nos); if (!PyDict_CheckExact(o)) { UOP_STAT_INC(uopcode, miss); + _tos_cache2 = _stack_item_2; + _tos_cache1 = nos; + _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(3); JUMP_TO_JUMP_TARGET(); } @@ -5329,13 +5053,13 @@ _tos_cache1 = nos; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_TOS_DICT_r01: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef tos; tos = stack_pointer[-1]; PyObject *o = PyStackRef_AsPyObjectBorrow(tos); @@ -5348,31 +5072,32 @@ SET_CURRENT_CACHED_VALUES(1); stack_pointer += -1; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_TOS_DICT_r11: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef tos; _PyStackRef _stack_item_0 = _tos_cache0; tos = _stack_item_0; PyObject *o = PyStackRef_AsPyObjectBorrow(tos); if (!PyDict_CheckExact(o)) { UOP_STAT_INC(uopcode, miss); + _tos_cache0 = tos; SET_CURRENT_CACHED_VALUES(1); JUMP_TO_JUMP_TARGET(); } _tos_cache0 = tos; SET_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_TOS_DICT_r22: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef tos; _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; @@ -5380,19 +5105,21 @@ PyObject *o = PyStackRef_AsPyObjectBorrow(tos); if (!PyDict_CheckExact(o)) { UOP_STAT_INC(uopcode, miss); + _tos_cache1 = tos; + _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(2); JUMP_TO_JUMP_TARGET(); } _tos_cache1 = tos; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_TOS_DICT_r33: { CHECK_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef tos; _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; @@ -5401,6 +5128,9 @@ PyObject *o = PyStackRef_AsPyObjectBorrow(tos); if (!PyDict_CheckExact(o)) { UOP_STAT_INC(uopcode, miss); + _tos_cache2 = tos; + _tos_cache1 = _stack_item_1; + _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(3); JUMP_TO_JUMP_TARGET(); } @@ -5408,13 +5138,13 @@ _tos_cache1 = _stack_item_1; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _BINARY_OP_SUBSCR_DICT_r21: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef sub_st; _PyStackRef dict_st; _PyStackRef res; @@ -5460,13 +5190,13 @@ _tos_cache1 = PyStackRef_ZERO_BITS; _tos_cache2 = PyStackRef_ZERO_BITS; SET_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _BINARY_OP_SUBSCR_CHECK_FUNC_r23: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef container; _PyStackRef getitem; _PyStackRef _stack_item_0 = _tos_cache0; @@ -5475,6 +5205,8 @@ PyTypeObject *tp = Py_TYPE(PyStackRef_AsPyObjectBorrow(container)); if (!PyType_HasFeature(tp, Py_TPFLAGS_HEAPTYPE)) { UOP_STAT_INC(uopcode, miss); + _tos_cache1 = _stack_item_1; + _tos_cache0 = container; SET_CURRENT_CACHED_VALUES(2); JUMP_TO_JUMP_TARGET(); } @@ -5482,6 +5214,8 @@ PyObject *getitem_o = FT_ATOMIC_LOAD_PTR_ACQUIRE(ht->_spec_cache.getitem); if (getitem_o == NULL) { UOP_STAT_INC(uopcode, miss); + _tos_cache1 = _stack_item_1; + _tos_cache0 = container; SET_CURRENT_CACHED_VALUES(2); JUMP_TO_JUMP_TARGET(); } @@ -5489,6 +5223,8 @@ uint32_t cached_version = FT_ATOMIC_LOAD_UINT32_RELAXED(ht->_spec_cache.getitem_version); if (((PyFunctionObject *)getitem_o)->func_version != cached_version) { UOP_STAT_INC(uopcode, miss); + _tos_cache1 = _stack_item_1; + _tos_cache0 = container; SET_CURRENT_CACHED_VALUES(2); JUMP_TO_JUMP_TARGET(); } @@ -5496,6 +5232,8 @@ assert(code->co_argcount == 2); if (!_PyThreadState_HasStackSpace(tstate, code->co_framesize)) { UOP_STAT_INC(uopcode, miss); + _tos_cache1 = _stack_item_1; + _tos_cache0 = container; SET_CURRENT_CACHED_VALUES(2); JUMP_TO_JUMP_TARGET(); } @@ -5505,13 +5243,13 @@ _tos_cache1 = _stack_item_1; _tos_cache0 = container; SET_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _BINARY_OP_SUBSCR_INIT_CALL_r01: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef getitem; _PyStackRef sub; _PyStackRef container; @@ -5528,13 +5266,13 @@ SET_CURRENT_CACHED_VALUES(1); stack_pointer += -3; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _BINARY_OP_SUBSCR_INIT_CALL_r11: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef getitem; _PyStackRef sub; _PyStackRef container; @@ -5552,13 +5290,13 @@ SET_CURRENT_CACHED_VALUES(1); stack_pointer += -2; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _BINARY_OP_SUBSCR_INIT_CALL_r21: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef getitem; _PyStackRef sub; _PyStackRef container; @@ -5577,13 +5315,13 @@ SET_CURRENT_CACHED_VALUES(1); stack_pointer += -1; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _BINARY_OP_SUBSCR_INIT_CALL_r31: { CHECK_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef getitem; _PyStackRef sub; _PyStackRef container; @@ -5601,13 +5339,13 @@ new_frame = PyStackRef_Wrap(pushed_frame); _tos_cache0 = new_frame; SET_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _LIST_APPEND_r10: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef v; _PyStackRef list; _PyStackRef _stack_item_0 = _tos_cache0; @@ -5621,13 +5359,13 @@ JUMP_TO_ERROR(); } SET_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _SET_ADD_r10: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef v; _PyStackRef set; _PyStackRef _stack_item_0 = _tos_cache0; @@ -5653,13 +5391,13 @@ SET_CURRENT_CACHED_VALUES(0); stack_pointer += -1; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _STORE_SUBSCR_r30: { CHECK_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef sub; _PyStackRef container; _PyStackRef v; @@ -5699,13 +5437,13 @@ _tos_cache1 = PyStackRef_ZERO_BITS; _tos_cache2 = PyStackRef_ZERO_BITS; SET_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _STORE_SUBSCR_LIST_INT_r32: { CHECK_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef sub_st; _PyStackRef list_st; _PyStackRef value; @@ -5723,12 +5461,18 @@ assert(PyList_CheckExact(list)); if (!_PyLong_IsNonNegativeCompact((PyLongObject *)sub)) { UOP_STAT_INC(uopcode, miss); + _tos_cache2 = sub_st; + _tos_cache1 = list_st; + _tos_cache0 = value; SET_CURRENT_CACHED_VALUES(3); JUMP_TO_JUMP_TARGET(); } Py_ssize_t index = ((PyLongObject*)sub)->long_value.ob_digit[0]; if (!LOCK_OBJECT(list)) { UOP_STAT_INC(uopcode, miss); + _tos_cache2 = sub_st; + _tos_cache1 = list_st; + _tos_cache0 = value; SET_CURRENT_CACHED_VALUES(3); JUMP_TO_JUMP_TARGET(); } @@ -5736,6 +5480,9 @@ UNLOCK_OBJECT(list); if (true) { UOP_STAT_INC(uopcode, miss); + _tos_cache2 = sub_st; + _tos_cache1 = list_st; + _tos_cache0 = value; SET_CURRENT_CACHED_VALUES(3); JUMP_TO_JUMP_TARGET(); } @@ -5761,13 +5508,13 @@ SET_CURRENT_CACHED_VALUES(2); stack_pointer += -2; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _STORE_SUBSCR_DICT_r31: { CHECK_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef sub; _PyStackRef dict_st; _PyStackRef value; @@ -5807,13 +5554,13 @@ SET_CURRENT_CACHED_VALUES(1); stack_pointer += -3; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _DELETE_SUBSCR_r20: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef sub; _PyStackRef container; _PyStackRef _stack_item_0 = _tos_cache0; @@ -5846,13 +5593,13 @@ _tos_cache1 = PyStackRef_ZERO_BITS; _tos_cache2 = PyStackRef_ZERO_BITS; SET_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _CALL_INTRINSIC_1_r11: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef value; _PyStackRef res; _PyStackRef _stack_item_0 = _tos_cache0; @@ -5879,13 +5626,13 @@ _tos_cache1 = PyStackRef_ZERO_BITS; _tos_cache2 = PyStackRef_ZERO_BITS; SET_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _CALL_INTRINSIC_2_r21: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef value1_st; _PyStackRef value2_st; _PyStackRef res; @@ -5923,13 +5670,13 @@ _tos_cache1 = PyStackRef_ZERO_BITS; _tos_cache2 = PyStackRef_ZERO_BITS; SET_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _RETURN_VALUE_r11: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef retval; _PyStackRef res; _PyStackRef _stack_item_0 = _tos_cache0; @@ -5950,13 +5697,13 @@ _tos_cache1 = PyStackRef_ZERO_BITS; _tos_cache2 = PyStackRef_ZERO_BITS; SET_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GET_AITER_r11: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef obj; _PyStackRef iter; _PyStackRef _stack_item_0 = _tos_cache0; @@ -6018,13 +5765,13 @@ _tos_cache1 = PyStackRef_ZERO_BITS; _tos_cache2 = PyStackRef_ZERO_BITS; SET_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GET_ANEXT_r12: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef aiter; _PyStackRef awaitable; _PyStackRef _stack_item_0 = _tos_cache0; @@ -6046,13 +5793,13 @@ SET_CURRENT_CACHED_VALUES(2); stack_pointer += -1; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GET_AWAITABLE_r11: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef iterable; _PyStackRef iter; _PyStackRef _stack_item_0 = _tos_cache0; @@ -6078,7 +5825,7 @@ _tos_cache1 = PyStackRef_ZERO_BITS; _tos_cache2 = PyStackRef_ZERO_BITS; SET_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } @@ -6086,7 +5833,7 @@ case _SEND_GEN_FRAME_r22: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef v; _PyStackRef receiver; _PyStackRef gen_frame; @@ -6098,11 +5845,15 @@ PyGenObject *gen = (PyGenObject *)PyStackRef_AsPyObjectBorrow(receiver); if (Py_TYPE(gen) != &PyGen_Type && Py_TYPE(gen) != &PyCoro_Type) { UOP_STAT_INC(uopcode, miss); + _tos_cache1 = v; + _tos_cache0 = receiver; SET_CURRENT_CACHED_VALUES(2); JUMP_TO_JUMP_TARGET(); } if (gen->gi_frame_state >= FRAME_EXECUTING) { UOP_STAT_INC(uopcode, miss); + _tos_cache1 = v; + _tos_cache0 = receiver; SET_CURRENT_CACHED_VALUES(2); JUMP_TO_JUMP_TARGET(); } @@ -6120,13 +5871,13 @@ _tos_cache0 = receiver; _tos_cache2 = PyStackRef_ZERO_BITS; SET_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _YIELD_VALUE_r11: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef retval; _PyStackRef value; _PyStackRef _stack_item_0 = _tos_cache0; @@ -6163,13 +5914,13 @@ _tos_cache1 = PyStackRef_ZERO_BITS; _tos_cache2 = PyStackRef_ZERO_BITS; SET_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _POP_EXCEPT_r10: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef exc_value; _PyStackRef _stack_item_0 = _tos_cache0; exc_value = _stack_item_0; @@ -6188,26 +5939,26 @@ SET_CURRENT_CACHED_VALUES(0); stack_pointer += -1; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _LOAD_COMMON_CONSTANT_r01: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef value; oparg = CURRENT_OPARG(); assert(oparg < NUM_COMMON_CONSTANTS); value = PyStackRef_FromPyObjectNew(tstate->interp->common_consts[oparg]); _tos_cache0 = value; SET_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _LOAD_COMMON_CONSTANT_r12: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef value; _PyStackRef _stack_item_0 = _tos_cache0; oparg = CURRENT_OPARG(); @@ -6216,13 +5967,13 @@ _tos_cache1 = value; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _LOAD_COMMON_CONSTANT_r23: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef value; _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; @@ -6233,13 +5984,13 @@ _tos_cache1 = _stack_item_1; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _LOAD_BUILD_CLASS_r01: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef bc; PyObject *bc_o; _PyFrame_SetStackPointer(frame, stack_pointer); @@ -6262,13 +6013,13 @@ _tos_cache1 = PyStackRef_ZERO_BITS; _tos_cache2 = PyStackRef_ZERO_BITS; SET_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _STORE_NAME_r10: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef v; _PyStackRef _stack_item_0 = _tos_cache0; oparg = CURRENT_OPARG(); @@ -6321,13 +6072,13 @@ _tos_cache1 = PyStackRef_ZERO_BITS; _tos_cache2 = PyStackRef_ZERO_BITS; SET_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _DELETE_NAME_r00: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); oparg = CURRENT_OPARG(); PyObject *name = GETITEM(FRAME_CO_NAMES, oparg); PyObject *ns = LOCALS(); @@ -6356,13 +6107,13 @@ _tos_cache1 = PyStackRef_ZERO_BITS; _tos_cache2 = PyStackRef_ZERO_BITS; SET_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _UNPACK_SEQUENCE_r10: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef seq; _PyStackRef *top; _PyStackRef _stack_item_0 = _tos_cache0; @@ -6384,13 +6135,13 @@ SET_CURRENT_CACHED_VALUES(0); stack_pointer += oparg; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _UNPACK_SEQUENCE_TWO_TUPLE_r12: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef seq; _PyStackRef val1; _PyStackRef val0; @@ -6402,6 +6153,7 @@ assert(PyTuple_CheckExact(seq_o)); if (PyTuple_GET_SIZE(seq_o) != 2) { UOP_STAT_INC(uopcode, miss); + _tos_cache0 = seq; SET_CURRENT_CACHED_VALUES(1); JUMP_TO_JUMP_TARGET(); } @@ -6421,13 +6173,13 @@ SET_CURRENT_CACHED_VALUES(2); stack_pointer += -2; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _UNPACK_SEQUENCE_TUPLE_r10: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef seq; _PyStackRef *values; _PyStackRef _stack_item_0 = _tos_cache0; @@ -6438,6 +6190,7 @@ assert(PyTuple_CheckExact(seq_o)); if (PyTuple_GET_SIZE(seq_o) != oparg) { UOP_STAT_INC(uopcode, miss); + _tos_cache0 = seq; SET_CURRENT_CACHED_VALUES(1); JUMP_TO_JUMP_TARGET(); } @@ -6455,13 +6208,13 @@ _tos_cache1 = PyStackRef_ZERO_BITS; _tos_cache2 = PyStackRef_ZERO_BITS; SET_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _UNPACK_SEQUENCE_LIST_r10: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef seq; _PyStackRef *values; _PyStackRef _stack_item_0 = _tos_cache0; @@ -6472,6 +6225,7 @@ assert(PyList_CheckExact(seq_o)); if (!LOCK_OBJECT(seq_o)) { UOP_STAT_INC(uopcode, miss); + _tos_cache0 = seq; SET_CURRENT_CACHED_VALUES(1); JUMP_TO_JUMP_TARGET(); } @@ -6479,6 +6233,7 @@ UNLOCK_OBJECT(seq_o); if (true) { UOP_STAT_INC(uopcode, miss); + _tos_cache0 = seq; SET_CURRENT_CACHED_VALUES(1); JUMP_TO_JUMP_TARGET(); } @@ -6498,13 +6253,13 @@ _tos_cache1 = PyStackRef_ZERO_BITS; _tos_cache2 = PyStackRef_ZERO_BITS; SET_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _UNPACK_EX_r10: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef seq; _PyStackRef *top; _PyStackRef _stack_item_0 = _tos_cache0; @@ -6526,13 +6281,13 @@ SET_CURRENT_CACHED_VALUES(0); stack_pointer += 1 + (oparg & 0xFF) + (oparg >> 8); ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _STORE_ATTR_r20: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef owner; _PyStackRef v; _PyStackRef _stack_item_0 = _tos_cache0; @@ -6567,13 +6322,13 @@ _tos_cache1 = PyStackRef_ZERO_BITS; _tos_cache2 = PyStackRef_ZERO_BITS; SET_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _DELETE_ATTR_r10: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef owner; _PyStackRef _stack_item_0 = _tos_cache0; oparg = CURRENT_OPARG(); @@ -6598,13 +6353,13 @@ _tos_cache1 = PyStackRef_ZERO_BITS; _tos_cache2 = PyStackRef_ZERO_BITS; SET_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _STORE_GLOBAL_r10: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef v; _PyStackRef _stack_item_0 = _tos_cache0; oparg = CURRENT_OPARG(); @@ -6629,13 +6384,13 @@ _tos_cache1 = PyStackRef_ZERO_BITS; _tos_cache2 = PyStackRef_ZERO_BITS; SET_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _DELETE_GLOBAL_r00: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); oparg = CURRENT_OPARG(); PyObject *name = GETITEM(FRAME_CO_NAMES, oparg); _PyFrame_SetStackPointer(frame, stack_pointer); @@ -6657,13 +6412,13 @@ _tos_cache1 = PyStackRef_ZERO_BITS; _tos_cache2 = PyStackRef_ZERO_BITS; SET_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _LOAD_LOCALS_r01: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef locals; PyObject *l = LOCALS(); if (l == NULL) { @@ -6677,7 +6432,60 @@ locals = PyStackRef_FromPyObjectNew(l); _tos_cache0 = locals; SET_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); + break; + } + + case _LOAD_LOCALS_r12: { + CHECK_CURRENT_CACHED_VALUES(1); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); + _PyStackRef locals; + _PyStackRef _stack_item_0 = _tos_cache0; + PyObject *l = LOCALS(); + if (l == NULL) { + stack_pointer[0] = _stack_item_0; + stack_pointer += 1; + ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); + _PyFrame_SetStackPointer(frame, stack_pointer); + _PyErr_SetString(tstate, PyExc_SystemError, + "no locals found"); + stack_pointer = _PyFrame_GetStackPointer(frame); + SET_CURRENT_CACHED_VALUES(0); + JUMP_TO_ERROR(); + } + locals = PyStackRef_FromPyObjectNew(l); + _tos_cache1 = locals; + _tos_cache0 = _stack_item_0; + SET_CURRENT_CACHED_VALUES(2); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); + break; + } + + case _LOAD_LOCALS_r23: { + CHECK_CURRENT_CACHED_VALUES(2); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); + _PyStackRef locals; + _PyStackRef _stack_item_0 = _tos_cache0; + _PyStackRef _stack_item_1 = _tos_cache1; + PyObject *l = LOCALS(); + if (l == NULL) { + stack_pointer[0] = _stack_item_0; + stack_pointer[1] = _stack_item_1; + stack_pointer += 2; + ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); + _PyFrame_SetStackPointer(frame, stack_pointer); + _PyErr_SetString(tstate, PyExc_SystemError, + "no locals found"); + stack_pointer = _PyFrame_GetStackPointer(frame); + SET_CURRENT_CACHED_VALUES(0); + JUMP_TO_ERROR(); + } + locals = PyStackRef_FromPyObjectNew(l); + _tos_cache2 = locals; + _tos_cache1 = _stack_item_1; + _tos_cache0 = _stack_item_0; + SET_CURRENT_CACHED_VALUES(3); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } @@ -6685,7 +6493,7 @@ case _LOAD_NAME_r01: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef v; oparg = CURRENT_OPARG(); PyObject *name = GETITEM(FRAME_CO_NAMES, oparg); @@ -6701,13 +6509,13 @@ _tos_cache1 = PyStackRef_ZERO_BITS; _tos_cache2 = PyStackRef_ZERO_BITS; SET_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _LOAD_GLOBAL_r00: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef *res; oparg = CURRENT_OPARG(); res = &stack_pointer[0]; @@ -6725,13 +6533,13 @@ SET_CURRENT_CACHED_VALUES(0); stack_pointer += 1; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _PUSH_NULL_CONDITIONAL_r00: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef *null; oparg = CURRENT_OPARG(); null = &stack_pointer[0]; @@ -6741,13 +6549,13 @@ SET_CURRENT_CACHED_VALUES(0); stack_pointer += (oparg & 1); ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_GLOBALS_VERSION_r00: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); uint16_t version = (uint16_t)CURRENT_OPERAND0_16(); PyDictObject *dict = (PyDictObject *)GLOBALS(); if (!PyDict_CheckExact(dict)) { @@ -6763,49 +6571,55 @@ } assert(DK_IS_UNICODE(keys)); SET_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_GLOBALS_VERSION_r11: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef _stack_item_0 = _tos_cache0; uint16_t version = (uint16_t)CURRENT_OPERAND0_16(); PyDictObject *dict = (PyDictObject *)GLOBALS(); if (!PyDict_CheckExact(dict)) { UOP_STAT_INC(uopcode, miss); + _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(1); JUMP_TO_JUMP_TARGET(); } PyDictKeysObject *keys = FT_ATOMIC_LOAD_PTR_ACQUIRE(dict->ma_keys); if (FT_ATOMIC_LOAD_UINT32_RELAXED(keys->dk_version) != version) { UOP_STAT_INC(uopcode, miss); + _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(1); JUMP_TO_JUMP_TARGET(); } assert(DK_IS_UNICODE(keys)); _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_GLOBALS_VERSION_r22: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; uint16_t version = (uint16_t)CURRENT_OPERAND0_16(); PyDictObject *dict = (PyDictObject *)GLOBALS(); if (!PyDict_CheckExact(dict)) { UOP_STAT_INC(uopcode, miss); + _tos_cache1 = _stack_item_1; + _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(2); JUMP_TO_JUMP_TARGET(); } PyDictKeysObject *keys = FT_ATOMIC_LOAD_PTR_ACQUIRE(dict->ma_keys); if (FT_ATOMIC_LOAD_UINT32_RELAXED(keys->dk_version) != version) { UOP_STAT_INC(uopcode, miss); + _tos_cache1 = _stack_item_1; + _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(2); JUMP_TO_JUMP_TARGET(); } @@ -6813,13 +6627,13 @@ _tos_cache1 = _stack_item_1; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_GLOBALS_VERSION_r33: { CHECK_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; _PyStackRef _stack_item_2 = _tos_cache2; @@ -6827,12 +6641,18 @@ PyDictObject *dict = (PyDictObject *)GLOBALS(); if (!PyDict_CheckExact(dict)) { UOP_STAT_INC(uopcode, miss); + _tos_cache2 = _stack_item_2; + _tos_cache1 = _stack_item_1; + _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(3); JUMP_TO_JUMP_TARGET(); } PyDictKeysObject *keys = FT_ATOMIC_LOAD_PTR_ACQUIRE(dict->ma_keys); if (FT_ATOMIC_LOAD_UINT32_RELAXED(keys->dk_version) != version) { UOP_STAT_INC(uopcode, miss); + _tos_cache2 = _stack_item_2; + _tos_cache1 = _stack_item_1; + _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(3); JUMP_TO_JUMP_TARGET(); } @@ -6841,13 +6661,13 @@ _tos_cache1 = _stack_item_1; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _LOAD_GLOBAL_MODULE_r01: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef res; uint16_t version = (uint16_t)CURRENT_OPERAND0_16(); uint16_t index = (uint16_t)CURRENT_OPERAND1_16(); @@ -6887,13 +6707,13 @@ _tos_cache1 = PyStackRef_ZERO_BITS; _tos_cache2 = PyStackRef_ZERO_BITS; SET_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _LOAD_GLOBAL_BUILTINS_r01: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef res; uint16_t version = (uint16_t)CURRENT_OPERAND0_16(); uint16_t index = (uint16_t)CURRENT_OPERAND1_16(); @@ -6932,13 +6752,13 @@ _tos_cache1 = PyStackRef_ZERO_BITS; _tos_cache2 = PyStackRef_ZERO_BITS; SET_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _DELETE_FAST_r00: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); oparg = CURRENT_OPARG(); _PyStackRef v = GETLOCAL(oparg); if (PyStackRef_IsNull(v)) { @@ -6960,13 +6780,13 @@ _tos_cache1 = PyStackRef_ZERO_BITS; _tos_cache2 = PyStackRef_ZERO_BITS; SET_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _MAKE_CELL_r00: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); oparg = CURRENT_OPARG(); PyObject *initial = PyStackRef_AsPyObjectBorrow(GETLOCAL(oparg)); PyObject *cell = PyCell_New(initial); @@ -6983,13 +6803,13 @@ _tos_cache1 = PyStackRef_ZERO_BITS; _tos_cache2 = PyStackRef_ZERO_BITS; SET_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _DELETE_DEREF_r00: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); oparg = CURRENT_OPARG(); PyObject *cell = PyStackRef_AsPyObjectBorrow(GETLOCAL(oparg)); PyObject *oldobj = PyCell_SwapTakeRef((PyCellObject *)cell, NULL); @@ -7007,13 +6827,13 @@ _tos_cache1 = PyStackRef_ZERO_BITS; _tos_cache2 = PyStackRef_ZERO_BITS; SET_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _LOAD_FROM_DICT_OR_DEREF_r11: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef class_dict_st; _PyStackRef value; _PyStackRef _stack_item_0 = _tos_cache0; @@ -7056,13 +6876,13 @@ _tos_cache1 = PyStackRef_ZERO_BITS; _tos_cache2 = PyStackRef_ZERO_BITS; SET_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _LOAD_DEREF_r01: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef value; oparg = CURRENT_OPARG(); PyCellObject *cell = (PyCellObject *)PyStackRef_AsPyObjectBorrow(GETLOCAL(oparg)); @@ -7083,13 +6903,13 @@ _tos_cache1 = PyStackRef_ZERO_BITS; _tos_cache2 = PyStackRef_ZERO_BITS; SET_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _STORE_DEREF_r10: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef v; _PyStackRef _stack_item_0 = _tos_cache0; oparg = CURRENT_OPARG(); @@ -7107,13 +6927,13 @@ SET_CURRENT_CACHED_VALUES(0); stack_pointer += -1; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _COPY_FREE_VARS_r00: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); oparg = CURRENT_OPARG(); PyCodeObject *co = _PyFrame_GetCode(frame); assert(PyStackRef_FunctionCheck(frame->f_funcobj)); @@ -7126,13 +6946,13 @@ frame->localsplus[offset + i] = PyStackRef_FromPyObjectNew(o); } SET_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _COPY_FREE_VARS_r11: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef _stack_item_0 = _tos_cache0; oparg = CURRENT_OPARG(); PyCodeObject *co = _PyFrame_GetCode(frame); @@ -7147,13 +6967,13 @@ } _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _COPY_FREE_VARS_r22: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; oparg = CURRENT_OPARG(); @@ -7170,13 +6990,13 @@ _tos_cache1 = _stack_item_1; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _COPY_FREE_VARS_r33: { CHECK_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; _PyStackRef _stack_item_2 = _tos_cache2; @@ -7195,13 +7015,13 @@ _tos_cache1 = _stack_item_1; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _BUILD_STRING_r01: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef *pieces; _PyStackRef str; oparg = CURRENT_OPARG(); @@ -7222,13 +7042,13 @@ SET_CURRENT_CACHED_VALUES(1); stack_pointer += -oparg; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _BUILD_INTERPOLATION_r01: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef *format; _PyStackRef str; _PyStackRef value; @@ -7279,13 +7099,13 @@ _tos_cache1 = PyStackRef_ZERO_BITS; _tos_cache2 = PyStackRef_ZERO_BITS; SET_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _BUILD_TEMPLATE_r21: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef interpolations; _PyStackRef strings; _PyStackRef template; @@ -7321,13 +7141,13 @@ _tos_cache1 = PyStackRef_ZERO_BITS; _tos_cache2 = PyStackRef_ZERO_BITS; SET_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _BUILD_TUPLE_r01: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef *values; _PyStackRef tup; oparg = CURRENT_OPARG(); @@ -7342,13 +7162,13 @@ SET_CURRENT_CACHED_VALUES(1); stack_pointer += -oparg; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _BUILD_LIST_r01: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef *values; _PyStackRef list; oparg = CURRENT_OPARG(); @@ -7367,13 +7187,13 @@ SET_CURRENT_CACHED_VALUES(1); stack_pointer += -oparg; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _LIST_EXTEND_r10: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef iterable_st; _PyStackRef list_st; _PyStackRef _stack_item_0 = _tos_cache0; @@ -7420,13 +7240,13 @@ _tos_cache1 = PyStackRef_ZERO_BITS; _tos_cache2 = PyStackRef_ZERO_BITS; SET_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _SET_UPDATE_r10: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef iterable; _PyStackRef set; _PyStackRef _stack_item_0 = _tos_cache0; @@ -7453,13 +7273,13 @@ _tos_cache1 = PyStackRef_ZERO_BITS; _tos_cache2 = PyStackRef_ZERO_BITS; SET_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _BUILD_SET_r01: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef *values; _PyStackRef set; oparg = CURRENT_OPARG(); @@ -7512,13 +7332,13 @@ SET_CURRENT_CACHED_VALUES(1); stack_pointer += -oparg; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _BUILD_MAP_r01: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef *values; _PyStackRef map; oparg = CURRENT_OPARG(); @@ -7539,13 +7359,13 @@ SET_CURRENT_CACHED_VALUES(1); stack_pointer += -oparg*2; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _SETUP_ANNOTATIONS_r00: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); PyObject *ann_dict; if (LOCALS() == NULL) { _PyFrame_SetStackPointer(frame, stack_pointer); @@ -7589,13 +7409,13 @@ _tos_cache1 = PyStackRef_ZERO_BITS; _tos_cache2 = PyStackRef_ZERO_BITS; SET_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _DICT_UPDATE_r10: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef update; _PyStackRef dict; _PyStackRef _stack_item_0 = _tos_cache0; @@ -7638,13 +7458,13 @@ _tos_cache1 = PyStackRef_ZERO_BITS; _tos_cache2 = PyStackRef_ZERO_BITS; SET_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _DICT_MERGE_r10: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef update; _PyStackRef dict; _PyStackRef callable; @@ -7683,13 +7503,13 @@ _tos_cache1 = PyStackRef_ZERO_BITS; _tos_cache2 = PyStackRef_ZERO_BITS; SET_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _MAP_ADD_r20: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef value; _PyStackRef key; _PyStackRef dict_st; @@ -7724,13 +7544,13 @@ SET_CURRENT_CACHED_VALUES(0); stack_pointer += -2; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _LOAD_SUPER_ATTR_ATTR_r31: { CHECK_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef self_st; _PyStackRef class_st; _PyStackRef global_super_st; @@ -7748,12 +7568,18 @@ assert(!(oparg & 1)); if (global_super != (PyObject *)&PySuper_Type) { UOP_STAT_INC(uopcode, miss); - SET_CURRENT_CACHED_VALUES(0); + _tos_cache2 = self_st; + _tos_cache1 = class_st; + _tos_cache0 = global_super_st; + SET_CURRENT_CACHED_VALUES(3); JUMP_TO_JUMP_TARGET(); } if (!PyType_Check(class)) { UOP_STAT_INC(uopcode, miss); - SET_CURRENT_CACHED_VALUES(0); + _tos_cache2 = self_st; + _tos_cache1 = class_st; + _tos_cache0 = global_super_st; + SET_CURRENT_CACHED_VALUES(3); JUMP_TO_JUMP_TARGET(); } STAT_INC(LOAD_SUPER_ATTR, hit); @@ -7789,13 +7615,13 @@ _tos_cache1 = PyStackRef_ZERO_BITS; _tos_cache2 = PyStackRef_ZERO_BITS; SET_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _LOAD_SUPER_ATTR_METHOD_r32: { CHECK_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef self_st; _PyStackRef class_st; _PyStackRef global_super_st; @@ -7814,12 +7640,18 @@ assert(oparg & 1); if (global_super != (PyObject *)&PySuper_Type) { UOP_STAT_INC(uopcode, miss); - SET_CURRENT_CACHED_VALUES(0); + _tos_cache2 = self_st; + _tos_cache1 = class_st; + _tos_cache0 = global_super_st; + SET_CURRENT_CACHED_VALUES(3); JUMP_TO_JUMP_TARGET(); } if (!PyType_Check(class)) { UOP_STAT_INC(uopcode, miss); - SET_CURRENT_CACHED_VALUES(0); + _tos_cache2 = self_st; + _tos_cache1 = class_st; + _tos_cache0 = global_super_st; + SET_CURRENT_CACHED_VALUES(3); JUMP_TO_JUMP_TARGET(); } STAT_INC(LOAD_SUPER_ATTR, hit); @@ -7869,13 +7701,13 @@ _tos_cache0 = attr; _tos_cache2 = PyStackRef_ZERO_BITS; SET_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _LOAD_ATTR_r10: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef owner; _PyStackRef attr; _PyStackRef *self_or_null; @@ -7939,13 +7771,13 @@ stack_pointer[-1] = attr; stack_pointer += (oparg&1); ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_TYPE_VERSION_r01: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef owner; owner = stack_pointer[-1]; uint32_t type_version = (uint32_t)CURRENT_OPERAND0_32(); @@ -7960,13 +7792,13 @@ SET_CURRENT_CACHED_VALUES(1); stack_pointer += -1; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_TYPE_VERSION_r11: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef owner; _PyStackRef _stack_item_0 = _tos_cache0; owner = _stack_item_0; @@ -7975,18 +7807,19 @@ assert(type_version != 0); if (FT_ATOMIC_LOAD_UINT_RELAXED(tp->tp_version_tag) != type_version) { UOP_STAT_INC(uopcode, miss); + _tos_cache0 = owner; SET_CURRENT_CACHED_VALUES(1); JUMP_TO_JUMP_TARGET(); } _tos_cache0 = owner; SET_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_TYPE_VERSION_r22: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef owner; _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; @@ -7996,19 +7829,21 @@ assert(type_version != 0); if (FT_ATOMIC_LOAD_UINT_RELAXED(tp->tp_version_tag) != type_version) { UOP_STAT_INC(uopcode, miss); + _tos_cache1 = owner; + _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(2); JUMP_TO_JUMP_TARGET(); } _tos_cache1 = owner; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_TYPE_VERSION_r33: { CHECK_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef owner; _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; @@ -8019,6 +7854,9 @@ assert(type_version != 0); if (FT_ATOMIC_LOAD_UINT_RELAXED(tp->tp_version_tag) != type_version) { UOP_STAT_INC(uopcode, miss); + _tos_cache2 = owner; + _tos_cache1 = _stack_item_1; + _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(3); JUMP_TO_JUMP_TARGET(); } @@ -8026,13 +7864,13 @@ _tos_cache1 = _stack_item_1; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_TYPE_VERSION_AND_LOCK_r01: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef owner; owner = stack_pointer[-1]; uint32_t type_version = (uint32_t)CURRENT_OPERAND0_32(); @@ -8056,13 +7894,13 @@ SET_CURRENT_CACHED_VALUES(1); stack_pointer += -1; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_TYPE_VERSION_AND_LOCK_r11: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef owner; _PyStackRef _stack_item_0 = _tos_cache0; owner = _stack_item_0; @@ -8071,6 +7909,7 @@ assert(type_version != 0); if (!LOCK_OBJECT(owner_o)) { UOP_STAT_INC(uopcode, miss); + _tos_cache0 = owner; SET_CURRENT_CACHED_VALUES(1); JUMP_TO_JUMP_TARGET(); } @@ -8079,19 +7918,20 @@ UNLOCK_OBJECT(owner_o); if (true) { UOP_STAT_INC(uopcode, miss); + _tos_cache0 = owner; SET_CURRENT_CACHED_VALUES(1); JUMP_TO_JUMP_TARGET(); } } _tos_cache0 = owner; SET_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_TYPE_VERSION_AND_LOCK_r22: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef owner; _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; @@ -8101,6 +7941,8 @@ assert(type_version != 0); if (!LOCK_OBJECT(owner_o)) { UOP_STAT_INC(uopcode, miss); + _tos_cache1 = owner; + _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(2); JUMP_TO_JUMP_TARGET(); } @@ -8109,6 +7951,8 @@ UNLOCK_OBJECT(owner_o); if (true) { UOP_STAT_INC(uopcode, miss); + _tos_cache1 = owner; + _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(2); JUMP_TO_JUMP_TARGET(); } @@ -8116,13 +7960,13 @@ _tos_cache1 = owner; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_TYPE_VERSION_AND_LOCK_r33: { CHECK_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef owner; _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; @@ -8133,6 +7977,9 @@ assert(type_version != 0); if (!LOCK_OBJECT(owner_o)) { UOP_STAT_INC(uopcode, miss); + _tos_cache2 = owner; + _tos_cache1 = _stack_item_1; + _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(3); JUMP_TO_JUMP_TARGET(); } @@ -8141,6 +7988,9 @@ UNLOCK_OBJECT(owner_o); if (true) { UOP_STAT_INC(uopcode, miss); + _tos_cache2 = owner; + _tos_cache1 = _stack_item_1; + _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(3); JUMP_TO_JUMP_TARGET(); } @@ -8149,13 +7999,13 @@ _tos_cache1 = _stack_item_1; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _CHECK_MANAGED_OBJECT_HAS_VALUES_r01: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef owner; owner = stack_pointer[-1]; PyObject *owner_o = PyStackRef_AsPyObjectBorrow(owner); @@ -8170,13 +8020,13 @@ SET_CURRENT_CACHED_VALUES(1); stack_pointer += -1; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _CHECK_MANAGED_OBJECT_HAS_VALUES_r11: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef owner; _PyStackRef _stack_item_0 = _tos_cache0; owner = _stack_item_0; @@ -8185,18 +8035,19 @@ assert(Py_TYPE(owner_o)->tp_flags & Py_TPFLAGS_INLINE_VALUES); if (!FT_ATOMIC_LOAD_UINT8(_PyObject_InlineValues(owner_o)->valid)) { UOP_STAT_INC(uopcode, miss); + _tos_cache0 = owner; SET_CURRENT_CACHED_VALUES(1); JUMP_TO_JUMP_TARGET(); } _tos_cache0 = owner; SET_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _CHECK_MANAGED_OBJECT_HAS_VALUES_r22: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef owner; _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; @@ -8206,19 +8057,21 @@ assert(Py_TYPE(owner_o)->tp_flags & Py_TPFLAGS_INLINE_VALUES); if (!FT_ATOMIC_LOAD_UINT8(_PyObject_InlineValues(owner_o)->valid)) { UOP_STAT_INC(uopcode, miss); + _tos_cache1 = owner; + _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(2); JUMP_TO_JUMP_TARGET(); } _tos_cache1 = owner; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _CHECK_MANAGED_OBJECT_HAS_VALUES_r33: { CHECK_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef owner; _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; @@ -8229,6 +8082,9 @@ assert(Py_TYPE(owner_o)->tp_flags & Py_TPFLAGS_INLINE_VALUES); if (!FT_ATOMIC_LOAD_UINT8(_PyObject_InlineValues(owner_o)->valid)) { UOP_STAT_INC(uopcode, miss); + _tos_cache2 = owner; + _tos_cache1 = _stack_item_1; + _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(3); JUMP_TO_JUMP_TARGET(); } @@ -8236,13 +8092,13 @@ _tos_cache1 = _stack_item_1; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _LOAD_ATTR_INSTANCE_VALUE_r11: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef owner; _PyStackRef attr; _PyStackRef _stack_item_0 = _tos_cache0; @@ -8253,6 +8109,7 @@ PyObject *attr_o = FT_ATOMIC_LOAD_PTR_ACQUIRE(*value_ptr); if (attr_o == NULL) { UOP_STAT_INC(uopcode, miss); + _tos_cache0 = owner; SET_CURRENT_CACHED_VALUES(1); JUMP_TO_JUMP_TARGET(); } @@ -8261,6 +8118,7 @@ if (!increfed) { if (true) { UOP_STAT_INC(uopcode, miss); + _tos_cache0 = owner; SET_CURRENT_CACHED_VALUES(1); JUMP_TO_JUMP_TARGET(); } @@ -8281,13 +8139,13 @@ SET_CURRENT_CACHED_VALUES(1); stack_pointer += -1; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _LOAD_ATTR_MODULE_r11: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef owner; _PyStackRef attr; _PyStackRef _stack_item_0 = _tos_cache0; @@ -8297,6 +8155,7 @@ PyObject *owner_o = PyStackRef_AsPyObjectBorrow(owner); if (Py_TYPE(owner_o)->tp_getattro != PyModule_Type.tp_getattro) { UOP_STAT_INC(uopcode, miss); + _tos_cache0 = owner; SET_CURRENT_CACHED_VALUES(1); JUMP_TO_JUMP_TARGET(); } @@ -8305,6 +8164,7 @@ PyDictKeysObject *keys = FT_ATOMIC_LOAD_PTR_ACQUIRE(dict->ma_keys); if (FT_ATOMIC_LOAD_UINT32_RELAXED(keys->dk_version) != dict_version) { UOP_STAT_INC(uopcode, miss); + _tos_cache0 = owner; SET_CURRENT_CACHED_VALUES(1); JUMP_TO_JUMP_TARGET(); } @@ -8314,6 +8174,7 @@ PyObject *attr_o = FT_ATOMIC_LOAD_PTR_RELAXED(ep->me_value); if (attr_o == NULL) { UOP_STAT_INC(uopcode, miss); + _tos_cache0 = owner; SET_CURRENT_CACHED_VALUES(1); JUMP_TO_JUMP_TARGET(); } @@ -8322,6 +8183,7 @@ if (!increfed) { if (true) { UOP_STAT_INC(uopcode, miss); + _tos_cache0 = owner; SET_CURRENT_CACHED_VALUES(1); JUMP_TO_JUMP_TARGET(); } @@ -8342,13 +8204,13 @@ SET_CURRENT_CACHED_VALUES(1); stack_pointer += -1; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _LOAD_ATTR_WITH_HINT_r11: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef owner; _PyStackRef attr; _PyStackRef _stack_item_0 = _tos_cache0; @@ -8360,6 +8222,7 @@ PyDictObject *dict = _PyObject_GetManagedDict(owner_o); if (dict == NULL) { UOP_STAT_INC(uopcode, miss); + _tos_cache0 = owner; SET_CURRENT_CACHED_VALUES(1); JUMP_TO_JUMP_TARGET(); } @@ -8368,6 +8231,7 @@ #ifdef Py_GIL_DISABLED if (!_Py_IsOwnedByCurrentThread((PyObject *)dict) && !_PyObject_GC_IS_SHARED(dict)) { UOP_STAT_INC(uopcode, miss); + _tos_cache0 = owner; SET_CURRENT_CACHED_VALUES(1); JUMP_TO_JUMP_TARGET(); } @@ -8376,6 +8240,7 @@ if (hint >= (size_t)FT_ATOMIC_LOAD_SSIZE_RELAXED(dk->dk_nentries)) { if (true) { UOP_STAT_INC(uopcode, miss); + _tos_cache0 = owner; SET_CURRENT_CACHED_VALUES(1); JUMP_TO_JUMP_TARGET(); } @@ -8384,6 +8249,7 @@ if (dk->dk_kind != DICT_KEYS_UNICODE) { if (true) { UOP_STAT_INC(uopcode, miss); + _tos_cache0 = owner; SET_CURRENT_CACHED_VALUES(1); JUMP_TO_JUMP_TARGET(); } @@ -8392,6 +8258,7 @@ if (FT_ATOMIC_LOAD_PTR_RELAXED(ep->me_key) != name) { if (true) { UOP_STAT_INC(uopcode, miss); + _tos_cache0 = owner; SET_CURRENT_CACHED_VALUES(1); JUMP_TO_JUMP_TARGET(); } @@ -8400,6 +8267,7 @@ if (attr_o == NULL) { if (true) { UOP_STAT_INC(uopcode, miss); + _tos_cache0 = owner; SET_CURRENT_CACHED_VALUES(1); JUMP_TO_JUMP_TARGET(); } @@ -8410,6 +8278,7 @@ if (!increfed) { if (true) { UOP_STAT_INC(uopcode, miss); + _tos_cache0 = owner; SET_CURRENT_CACHED_VALUES(1); JUMP_TO_JUMP_TARGET(); } @@ -8429,13 +8298,13 @@ SET_CURRENT_CACHED_VALUES(1); stack_pointer += -1; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _LOAD_ATTR_SLOT_r11: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef owner; _PyStackRef attr; _PyStackRef _stack_item_0 = _tos_cache0; @@ -8446,6 +8315,7 @@ PyObject *attr_o = FT_ATOMIC_LOAD_PTR(*addr); if (attr_o == NULL) { UOP_STAT_INC(uopcode, miss); + _tos_cache0 = owner; SET_CURRENT_CACHED_VALUES(1); JUMP_TO_JUMP_TARGET(); } @@ -8453,6 +8323,7 @@ int increfed = _Py_TryIncrefCompareStackRef(addr, attr_o, &attr); if (!increfed) { UOP_STAT_INC(uopcode, miss); + _tos_cache0 = owner; SET_CURRENT_CACHED_VALUES(1); JUMP_TO_JUMP_TARGET(); } @@ -8475,13 +8346,13 @@ SET_CURRENT_CACHED_VALUES(1); stack_pointer += -1; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _CHECK_ATTR_CLASS_r01: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef owner; owner = stack_pointer[-1]; uint32_t type_version = (uint32_t)CURRENT_OPERAND0_32(); @@ -8501,13 +8372,13 @@ SET_CURRENT_CACHED_VALUES(1); stack_pointer += -1; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _CHECK_ATTR_CLASS_r11: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef owner; _PyStackRef _stack_item_0 = _tos_cache0; owner = _stack_item_0; @@ -8515,24 +8386,26 @@ PyObject *owner_o = PyStackRef_AsPyObjectBorrow(owner); if (!PyType_Check(owner_o)) { UOP_STAT_INC(uopcode, miss); + _tos_cache0 = owner; SET_CURRENT_CACHED_VALUES(1); JUMP_TO_JUMP_TARGET(); } assert(type_version != 0); if (FT_ATOMIC_LOAD_UINT_RELAXED(((PyTypeObject *)owner_o)->tp_version_tag) != type_version) { UOP_STAT_INC(uopcode, miss); + _tos_cache0 = owner; SET_CURRENT_CACHED_VALUES(1); JUMP_TO_JUMP_TARGET(); } _tos_cache0 = owner; SET_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _CHECK_ATTR_CLASS_r22: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef owner; _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; @@ -8541,25 +8414,29 @@ PyObject *owner_o = PyStackRef_AsPyObjectBorrow(owner); if (!PyType_Check(owner_o)) { UOP_STAT_INC(uopcode, miss); + _tos_cache1 = owner; + _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(2); JUMP_TO_JUMP_TARGET(); } assert(type_version != 0); if (FT_ATOMIC_LOAD_UINT_RELAXED(((PyTypeObject *)owner_o)->tp_version_tag) != type_version) { UOP_STAT_INC(uopcode, miss); + _tos_cache1 = owner; + _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(2); JUMP_TO_JUMP_TARGET(); } _tos_cache1 = owner; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _CHECK_ATTR_CLASS_r33: { CHECK_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef owner; _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; @@ -8569,12 +8446,18 @@ PyObject *owner_o = PyStackRef_AsPyObjectBorrow(owner); if (!PyType_Check(owner_o)) { UOP_STAT_INC(uopcode, miss); + _tos_cache2 = owner; + _tos_cache1 = _stack_item_1; + _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(3); JUMP_TO_JUMP_TARGET(); } assert(type_version != 0); if (FT_ATOMIC_LOAD_UINT_RELAXED(((PyTypeObject *)owner_o)->tp_version_tag) != type_version) { UOP_STAT_INC(uopcode, miss); + _tos_cache2 = owner; + _tos_cache1 = _stack_item_1; + _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(3); JUMP_TO_JUMP_TARGET(); } @@ -8582,13 +8465,13 @@ _tos_cache1 = _stack_item_1; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _LOAD_ATTR_CLASS_r11: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef owner; _PyStackRef attr; _PyStackRef _stack_item_0 = _tos_cache0; @@ -8612,13 +8495,13 @@ SET_CURRENT_CACHED_VALUES(1); stack_pointer += -1; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _LOAD_ATTR_PROPERTY_FRAME_r11: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef owner; _PyStackRef new_frame; _PyStackRef _stack_item_0 = _tos_cache0; @@ -8631,21 +8514,25 @@ PyCodeObject *code = (PyCodeObject *)f->func_code; if ((code->co_flags & (CO_VARKEYWORDS | CO_VARARGS | CO_OPTIMIZED)) != CO_OPTIMIZED) { UOP_STAT_INC(uopcode, miss); + _tos_cache0 = owner; SET_CURRENT_CACHED_VALUES(1); JUMP_TO_JUMP_TARGET(); } if (code->co_kwonlyargcount) { UOP_STAT_INC(uopcode, miss); + _tos_cache0 = owner; SET_CURRENT_CACHED_VALUES(1); JUMP_TO_JUMP_TARGET(); } if (code->co_argcount != 1) { UOP_STAT_INC(uopcode, miss); + _tos_cache0 = owner; SET_CURRENT_CACHED_VALUES(1); JUMP_TO_JUMP_TARGET(); } if (!_PyThreadState_HasStackSpace(tstate, code->co_framesize)) { UOP_STAT_INC(uopcode, miss); + _tos_cache0 = owner; SET_CURRENT_CACHED_VALUES(1); JUMP_TO_JUMP_TARGET(); } @@ -8657,7 +8544,7 @@ _tos_cache1 = PyStackRef_ZERO_BITS; _tos_cache2 = PyStackRef_ZERO_BITS; SET_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } @@ -8665,7 +8552,7 @@ case _GUARD_DORV_NO_DICT_r01: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef owner; owner = stack_pointer[-1]; PyObject *owner_o = PyStackRef_AsPyObjectBorrow(owner); @@ -8684,13 +8571,13 @@ SET_CURRENT_CACHED_VALUES(1); stack_pointer += -1; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_DORV_NO_DICT_r11: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef owner; _PyStackRef _stack_item_0 = _tos_cache0; owner = _stack_item_0; @@ -8702,19 +8589,20 @@ UNLOCK_OBJECT(owner_o); if (true) { UOP_STAT_INC(uopcode, miss); + _tos_cache0 = owner; SET_CURRENT_CACHED_VALUES(1); JUMP_TO_JUMP_TARGET(); } } _tos_cache0 = owner; SET_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_DORV_NO_DICT_r22: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef owner; _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; @@ -8727,6 +8615,8 @@ UNLOCK_OBJECT(owner_o); if (true) { UOP_STAT_INC(uopcode, miss); + _tos_cache1 = owner; + _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(2); JUMP_TO_JUMP_TARGET(); } @@ -8734,13 +8624,13 @@ _tos_cache1 = owner; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_DORV_NO_DICT_r33: { CHECK_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef owner; _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; @@ -8754,6 +8644,9 @@ UNLOCK_OBJECT(owner_o); if (true) { UOP_STAT_INC(uopcode, miss); + _tos_cache2 = owner; + _tos_cache1 = _stack_item_1; + _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(3); JUMP_TO_JUMP_TARGET(); } @@ -8762,15 +8655,16 @@ _tos_cache1 = _stack_item_1; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } - case _STORE_ATTR_INSTANCE_VALUE_r20: { + case _STORE_ATTR_INSTANCE_VALUE_r21: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef owner; _PyStackRef value; + _PyStackRef o; _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; owner = _stack_item_1; @@ -8788,21 +8682,26 @@ _PyDictValues_AddToInsertionOrder(values, index); } UNLOCK_OBJECT(owner_o); + o = owner; + stack_pointer[0] = o; + stack_pointer += 1; + ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); _PyFrame_SetStackPointer(frame, stack_pointer); - PyStackRef_CLOSE(owner); Py_XDECREF(old_value); stack_pointer = _PyFrame_GetStackPointer(frame); - _tos_cache0 = PyStackRef_ZERO_BITS; + _tos_cache0 = o; _tos_cache1 = PyStackRef_ZERO_BITS; _tos_cache2 = PyStackRef_ZERO_BITS; - SET_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + SET_CURRENT_CACHED_VALUES(1); + stack_pointer += -1; + ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _STORE_ATTR_WITH_HINT_r20: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef owner; _PyStackRef value; _PyStackRef _stack_item_0 = _tos_cache0; @@ -8816,12 +8715,16 @@ PyDictObject *dict = _PyObject_GetManagedDict(owner_o); if (dict == NULL) { UOP_STAT_INC(uopcode, miss); - SET_CURRENT_CACHED_VALUES(0); + _tos_cache1 = owner; + _tos_cache0 = value; + SET_CURRENT_CACHED_VALUES(2); JUMP_TO_JUMP_TARGET(); } if (!LOCK_OBJECT(dict)) { UOP_STAT_INC(uopcode, miss); - SET_CURRENT_CACHED_VALUES(0); + _tos_cache1 = owner; + _tos_cache0 = value; + SET_CURRENT_CACHED_VALUES(2); JUMP_TO_JUMP_TARGET(); } assert(PyDict_CheckExact((PyObject *)dict)); @@ -8831,7 +8734,9 @@ UNLOCK_OBJECT(dict); if (true) { UOP_STAT_INC(uopcode, miss); - SET_CURRENT_CACHED_VALUES(0); + _tos_cache1 = owner; + _tos_cache0 = value; + SET_CURRENT_CACHED_VALUES(2); JUMP_TO_JUMP_TARGET(); } } @@ -8840,7 +8745,9 @@ UNLOCK_OBJECT(dict); if (true) { UOP_STAT_INC(uopcode, miss); - SET_CURRENT_CACHED_VALUES(0); + _tos_cache1 = owner; + _tos_cache0 = value; + SET_CURRENT_CACHED_VALUES(2); JUMP_TO_JUMP_TARGET(); } } @@ -8849,7 +8756,9 @@ UNLOCK_OBJECT(dict); if (true) { UOP_STAT_INC(uopcode, miss); - SET_CURRENT_CACHED_VALUES(0); + _tos_cache1 = owner; + _tos_cache0 = value; + SET_CURRENT_CACHED_VALUES(2); JUMP_TO_JUMP_TARGET(); } } @@ -8873,15 +8782,16 @@ _tos_cache1 = PyStackRef_ZERO_BITS; _tos_cache2 = PyStackRef_ZERO_BITS; SET_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } - case _STORE_ATTR_SLOT_r20: { + case _STORE_ATTR_SLOT_r21: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef owner; _PyStackRef value; + _PyStackRef o; _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; owner = _stack_item_1; @@ -8890,6 +8800,8 @@ PyObject *owner_o = PyStackRef_AsPyObjectBorrow(owner); if (!LOCK_OBJECT(owner_o)) { UOP_STAT_INC(uopcode, miss); + _tos_cache1 = owner; + _tos_cache0 = value; SET_CURRENT_CACHED_VALUES(2); JUMP_TO_JUMP_TARGET(); } @@ -8898,21 +8810,26 @@ PyObject *old_value = *(PyObject **)addr; FT_ATOMIC_STORE_PTR_RELEASE(*(PyObject **)addr, PyStackRef_AsPyObjectSteal(value)); UNLOCK_OBJECT(owner_o); + o = owner; + stack_pointer[0] = o; + stack_pointer += 1; + ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); _PyFrame_SetStackPointer(frame, stack_pointer); - PyStackRef_CLOSE(owner); Py_XDECREF(old_value); stack_pointer = _PyFrame_GetStackPointer(frame); - _tos_cache0 = PyStackRef_ZERO_BITS; + _tos_cache0 = o; _tos_cache1 = PyStackRef_ZERO_BITS; _tos_cache2 = PyStackRef_ZERO_BITS; - SET_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + SET_CURRENT_CACHED_VALUES(1); + stack_pointer += -1; + ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _COMPARE_OP_r21: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef right; _PyStackRef left; _PyStackRef res; @@ -8963,13 +8880,13 @@ _tos_cache1 = PyStackRef_ZERO_BITS; _tos_cache2 = PyStackRef_ZERO_BITS; SET_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _COMPARE_OP_FLOAT_r01: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef right; _PyStackRef left; _PyStackRef res; @@ -8989,13 +8906,13 @@ SET_CURRENT_CACHED_VALUES(1); stack_pointer += -2; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _COMPARE_OP_FLOAT_r11: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef right; _PyStackRef left; _PyStackRef res; @@ -9016,13 +8933,13 @@ SET_CURRENT_CACHED_VALUES(1); stack_pointer += -1; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _COMPARE_OP_FLOAT_r21: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef right; _PyStackRef left; _PyStackRef res; @@ -9042,13 +8959,13 @@ res = (sign_ish & oparg) ? PyStackRef_True : PyStackRef_False; _tos_cache0 = res; SET_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _COMPARE_OP_FLOAT_r32: { CHECK_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef right; _PyStackRef left; _PyStackRef res; @@ -9070,16 +8987,18 @@ _tos_cache1 = res; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } - case _COMPARE_OP_INT_r21: { + case _COMPARE_OP_INT_r23: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef right; _PyStackRef left; _PyStackRef res; + _PyStackRef l; + _PyStackRef r; _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; oparg = CURRENT_OPARG(); @@ -9095,20 +9014,20 @@ Py_ssize_t ileft = _PyLong_CompactValue((PyLongObject *)left_o); Py_ssize_t iright = _PyLong_CompactValue((PyLongObject *)right_o); int sign_ish = COMPARISON_BIT(ileft, iright); - PyStackRef_CLOSE_SPECIALIZED(left, _PyLong_ExactDealloc); - PyStackRef_CLOSE_SPECIALIZED(right, _PyLong_ExactDealloc); + l = left; + r = right; res = (sign_ish & oparg) ? PyStackRef_True : PyStackRef_False; + _tos_cache2 = r; + _tos_cache1 = l; _tos_cache0 = res; - _tos_cache1 = PyStackRef_ZERO_BITS; - _tos_cache2 = PyStackRef_ZERO_BITS; - SET_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + SET_CURRENT_CACHED_VALUES(3); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _COMPARE_OP_STR_r21: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef right; _PyStackRef left; _PyStackRef res; @@ -9132,13 +9051,13 @@ _tos_cache1 = PyStackRef_ZERO_BITS; _tos_cache2 = PyStackRef_ZERO_BITS; SET_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _IS_OP_r21: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef right; _PyStackRef left; _PyStackRef b; @@ -9164,13 +9083,13 @@ _tos_cache1 = PyStackRef_ZERO_BITS; _tos_cache2 = PyStackRef_ZERO_BITS; SET_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _CONTAINS_OP_r21: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef right; _PyStackRef left; _PyStackRef b; @@ -9207,13 +9126,13 @@ _tos_cache1 = PyStackRef_ZERO_BITS; _tos_cache2 = PyStackRef_ZERO_BITS; SET_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_TOS_ANY_SET_r01: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef tos; tos = stack_pointer[-1]; PyObject *o = PyStackRef_AsPyObjectBorrow(tos); @@ -9226,31 +9145,32 @@ SET_CURRENT_CACHED_VALUES(1); stack_pointer += -1; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_TOS_ANY_SET_r11: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef tos; _PyStackRef _stack_item_0 = _tos_cache0; tos = _stack_item_0; PyObject *o = PyStackRef_AsPyObjectBorrow(tos); if (!PyAnySet_CheckExact(o)) { UOP_STAT_INC(uopcode, miss); + _tos_cache0 = tos; SET_CURRENT_CACHED_VALUES(1); JUMP_TO_JUMP_TARGET(); } _tos_cache0 = tos; SET_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_TOS_ANY_SET_r22: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef tos; _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; @@ -9258,19 +9178,21 @@ PyObject *o = PyStackRef_AsPyObjectBorrow(tos); if (!PyAnySet_CheckExact(o)) { UOP_STAT_INC(uopcode, miss); + _tos_cache1 = tos; + _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(2); JUMP_TO_JUMP_TARGET(); } _tos_cache1 = tos; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_TOS_ANY_SET_r33: { CHECK_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef tos; _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; @@ -9279,6 +9201,9 @@ PyObject *o = PyStackRef_AsPyObjectBorrow(tos); if (!PyAnySet_CheckExact(o)) { UOP_STAT_INC(uopcode, miss); + _tos_cache2 = tos; + _tos_cache1 = _stack_item_1; + _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(3); JUMP_TO_JUMP_TARGET(); } @@ -9286,13 +9211,13 @@ _tos_cache1 = _stack_item_1; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _CONTAINS_OP_SET_r21: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef right; _PyStackRef left; _PyStackRef b; @@ -9331,13 +9256,13 @@ _tos_cache1 = PyStackRef_ZERO_BITS; _tos_cache2 = PyStackRef_ZERO_BITS; SET_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _CONTAINS_OP_DICT_r21: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef right; _PyStackRef left; _PyStackRef b; @@ -9376,13 +9301,13 @@ _tos_cache1 = PyStackRef_ZERO_BITS; _tos_cache2 = PyStackRef_ZERO_BITS; SET_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _CHECK_EG_MATCH_r22: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef match_type_st; _PyStackRef exc_value_st; _PyStackRef rest; @@ -9452,13 +9377,13 @@ _tos_cache0 = rest; _tos_cache2 = PyStackRef_ZERO_BITS; SET_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _CHECK_EXC_MATCH_r22: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef right; _PyStackRef left; _PyStackRef b; @@ -9495,13 +9420,13 @@ SET_CURRENT_CACHED_VALUES(2); stack_pointer += -1; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _IMPORT_NAME_r21: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef fromlist; _PyStackRef level; _PyStackRef res; @@ -9539,13 +9464,13 @@ _tos_cache1 = PyStackRef_ZERO_BITS; _tos_cache2 = PyStackRef_ZERO_BITS; SET_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _IMPORT_FROM_r12: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef from; _PyStackRef res; _PyStackRef _stack_item_0 = _tos_cache0; @@ -9569,7 +9494,7 @@ SET_CURRENT_CACHED_VALUES(2); stack_pointer += -1; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } @@ -9579,7 +9504,7 @@ case _IS_NONE_r11: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef value; _PyStackRef b; _PyStackRef _stack_item_0 = _tos_cache0; @@ -9604,7 +9529,7 @@ _tos_cache1 = PyStackRef_ZERO_BITS; _tos_cache2 = PyStackRef_ZERO_BITS; SET_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } @@ -9612,7 +9537,7 @@ case _GET_LEN_r12: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef obj; _PyStackRef len; _PyStackRef _stack_item_0 = _tos_cache0; @@ -9639,13 +9564,13 @@ SET_CURRENT_CACHED_VALUES(2); stack_pointer += -1; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _MATCH_CLASS_r31: { CHECK_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef names; _PyStackRef type; _PyStackRef subject; @@ -9698,13 +9623,13 @@ _tos_cache1 = PyStackRef_ZERO_BITS; _tos_cache2 = PyStackRef_ZERO_BITS; SET_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _MATCH_MAPPING_r02: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef subject; _PyStackRef res; subject = stack_pointer[-1]; @@ -9715,13 +9640,13 @@ SET_CURRENT_CACHED_VALUES(2); stack_pointer += -1; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _MATCH_MAPPING_r12: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef subject; _PyStackRef res; _PyStackRef _stack_item_0 = _tos_cache0; @@ -9731,13 +9656,13 @@ _tos_cache1 = res; _tos_cache0 = subject; SET_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _MATCH_MAPPING_r23: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef subject; _PyStackRef res; _PyStackRef _stack_item_0 = _tos_cache0; @@ -9749,13 +9674,13 @@ _tos_cache1 = subject; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _MATCH_SEQUENCE_r02: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef subject; _PyStackRef res; subject = stack_pointer[-1]; @@ -9766,13 +9691,13 @@ SET_CURRENT_CACHED_VALUES(2); stack_pointer += -1; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _MATCH_SEQUENCE_r12: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef subject; _PyStackRef res; _PyStackRef _stack_item_0 = _tos_cache0; @@ -9782,13 +9707,13 @@ _tos_cache1 = res; _tos_cache0 = subject; SET_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _MATCH_SEQUENCE_r23: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef subject; _PyStackRef res; _PyStackRef _stack_item_0 = _tos_cache0; @@ -9800,13 +9725,13 @@ _tos_cache1 = subject; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _MATCH_KEYS_r23: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef keys; _PyStackRef subject; _PyStackRef values_or_none; @@ -9833,13 +9758,13 @@ SET_CURRENT_CACHED_VALUES(3); stack_pointer += -2; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GET_ITER_r12: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef iterable; _PyStackRef iter; _PyStackRef index_or_null; @@ -9883,13 +9808,13 @@ _tos_cache0 = iter; _tos_cache2 = PyStackRef_ZERO_BITS; SET_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GET_YIELD_FROM_ITER_r11: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef iterable; _PyStackRef iter; _PyStackRef _stack_item_0 = _tos_cache0; @@ -9937,7 +9862,7 @@ _tos_cache1 = PyStackRef_ZERO_BITS; _tos_cache2 = PyStackRef_ZERO_BITS; SET_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } @@ -9945,7 +9870,7 @@ case _FOR_ITER_TIER_TWO_r23: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef null_or_index; _PyStackRef iter; _PyStackRef next; @@ -9968,7 +9893,11 @@ } if (true) { UOP_STAT_INC(uopcode, miss); - SET_CURRENT_CACHED_VALUES(0); + _tos_cache1 = null_or_index; + _tos_cache0 = iter; + SET_CURRENT_CACHED_VALUES(2); + stack_pointer += -2; + ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); JUMP_TO_JUMP_TARGET(); } } @@ -9979,7 +9908,7 @@ SET_CURRENT_CACHED_VALUES(3); stack_pointer += -2; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } @@ -9987,7 +9916,7 @@ case _ITER_CHECK_LIST_r02: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef null_or_index; _PyStackRef iter; null_or_index = stack_pointer[-1]; @@ -10011,13 +9940,13 @@ SET_CURRENT_CACHED_VALUES(2); stack_pointer += -2; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _ITER_CHECK_LIST_r12: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef null_or_index; _PyStackRef iter; _PyStackRef _stack_item_0 = _tos_cache0; @@ -10026,6 +9955,7 @@ PyObject *iter_o = PyStackRef_AsPyObjectBorrow(iter); if (Py_TYPE(iter_o) != &PyList_Type) { UOP_STAT_INC(uopcode, miss); + _tos_cache0 = null_or_index; SET_CURRENT_CACHED_VALUES(1); JUMP_TO_JUMP_TARGET(); } @@ -10033,6 +9963,7 @@ #ifdef Py_GIL_DISABLED if (!_Py_IsOwnedByCurrentThread(iter_o) && !_PyObject_GC_IS_SHARED(iter_o)) { UOP_STAT_INC(uopcode, miss); + _tos_cache0 = null_or_index; SET_CURRENT_CACHED_VALUES(1); JUMP_TO_JUMP_TARGET(); } @@ -10042,13 +9973,13 @@ SET_CURRENT_CACHED_VALUES(2); stack_pointer += -1; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _ITER_CHECK_LIST_r22: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef null_or_index; _PyStackRef iter; _PyStackRef _stack_item_0 = _tos_cache0; @@ -10058,6 +9989,8 @@ PyObject *iter_o = PyStackRef_AsPyObjectBorrow(iter); if (Py_TYPE(iter_o) != &PyList_Type) { UOP_STAT_INC(uopcode, miss); + _tos_cache1 = null_or_index; + _tos_cache0 = iter; SET_CURRENT_CACHED_VALUES(2); JUMP_TO_JUMP_TARGET(); } @@ -10065,6 +9998,8 @@ #ifdef Py_GIL_DISABLED if (!_Py_IsOwnedByCurrentThread(iter_o) && !_PyObject_GC_IS_SHARED(iter_o)) { UOP_STAT_INC(uopcode, miss); + _tos_cache1 = null_or_index; + _tos_cache0 = iter; SET_CURRENT_CACHED_VALUES(2); JUMP_TO_JUMP_TARGET(); } @@ -10072,13 +10007,13 @@ _tos_cache1 = null_or_index; _tos_cache0 = iter; SET_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _ITER_CHECK_LIST_r33: { CHECK_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef null_or_index; _PyStackRef iter; _PyStackRef _stack_item_0 = _tos_cache0; @@ -10089,6 +10024,9 @@ PyObject *iter_o = PyStackRef_AsPyObjectBorrow(iter); if (Py_TYPE(iter_o) != &PyList_Type) { UOP_STAT_INC(uopcode, miss); + _tos_cache2 = null_or_index; + _tos_cache1 = iter; + _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(3); JUMP_TO_JUMP_TARGET(); } @@ -10096,6 +10034,9 @@ #ifdef Py_GIL_DISABLED if (!_Py_IsOwnedByCurrentThread(iter_o) && !_PyObject_GC_IS_SHARED(iter_o)) { UOP_STAT_INC(uopcode, miss); + _tos_cache2 = null_or_index; + _tos_cache1 = iter; + _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(3); JUMP_TO_JUMP_TARGET(); } @@ -10104,7 +10045,7 @@ _tos_cache1 = iter; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } @@ -10112,7 +10053,7 @@ case _GUARD_NOT_EXHAUSTED_LIST_r02: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef null_or_index; _PyStackRef iter; null_or_index = stack_pointer[-1]; @@ -10131,13 +10072,13 @@ SET_CURRENT_CACHED_VALUES(2); stack_pointer += -2; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_NOT_EXHAUSTED_LIST_r12: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef null_or_index; _PyStackRef iter; _PyStackRef _stack_item_0 = _tos_cache0; @@ -10148,6 +10089,7 @@ assert(Py_TYPE(list_o) == &PyList_Type); if ((size_t)PyStackRef_UntagInt(null_or_index) >= (size_t)PyList_GET_SIZE(list_o)) { UOP_STAT_INC(uopcode, miss); + _tos_cache0 = null_or_index; SET_CURRENT_CACHED_VALUES(1); JUMP_TO_JUMP_TARGET(); } @@ -10157,13 +10099,13 @@ SET_CURRENT_CACHED_VALUES(2); stack_pointer += -1; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_NOT_EXHAUSTED_LIST_r22: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef null_or_index; _PyStackRef iter; _PyStackRef _stack_item_0 = _tos_cache0; @@ -10175,6 +10117,8 @@ assert(Py_TYPE(list_o) == &PyList_Type); if ((size_t)PyStackRef_UntagInt(null_or_index) >= (size_t)PyList_GET_SIZE(list_o)) { UOP_STAT_INC(uopcode, miss); + _tos_cache1 = null_or_index; + _tos_cache0 = iter; SET_CURRENT_CACHED_VALUES(2); JUMP_TO_JUMP_TARGET(); } @@ -10182,13 +10126,13 @@ _tos_cache1 = null_or_index; _tos_cache0 = iter; SET_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_NOT_EXHAUSTED_LIST_r33: { CHECK_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef null_or_index; _PyStackRef iter; _PyStackRef _stack_item_0 = _tos_cache0; @@ -10201,6 +10145,9 @@ assert(Py_TYPE(list_o) == &PyList_Type); if ((size_t)PyStackRef_UntagInt(null_or_index) >= (size_t)PyList_GET_SIZE(list_o)) { UOP_STAT_INC(uopcode, miss); + _tos_cache2 = null_or_index; + _tos_cache1 = iter; + _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(3); JUMP_TO_JUMP_TARGET(); } @@ -10209,7 +10156,7 @@ _tos_cache1 = iter; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } @@ -10217,7 +10164,7 @@ case _ITER_NEXT_LIST_TIER_TWO_r23: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef null_or_index; _PyStackRef iter; _PyStackRef next; @@ -10240,7 +10187,11 @@ stack_pointer = _PyFrame_GetStackPointer(frame); if (result <= 0) { UOP_STAT_INC(uopcode, miss); - SET_CURRENT_CACHED_VALUES(0); + _tos_cache1 = null_or_index; + _tos_cache0 = iter; + SET_CURRENT_CACHED_VALUES(2); + stack_pointer += -2; + ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); JUMP_TO_JUMP_TARGET(); } #else @@ -10255,13 +10206,13 @@ SET_CURRENT_CACHED_VALUES(3); stack_pointer += -2; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _ITER_CHECK_TUPLE_r02: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef null_or_index; _PyStackRef iter; null_or_index = stack_pointer[-1]; @@ -10278,13 +10229,13 @@ SET_CURRENT_CACHED_VALUES(2); stack_pointer += -2; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _ITER_CHECK_TUPLE_r12: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef null_or_index; _PyStackRef iter; _PyStackRef _stack_item_0 = _tos_cache0; @@ -10293,6 +10244,7 @@ PyObject *iter_o = PyStackRef_AsPyObjectBorrow(iter); if (Py_TYPE(iter_o) != &PyTuple_Type) { UOP_STAT_INC(uopcode, miss); + _tos_cache0 = null_or_index; SET_CURRENT_CACHED_VALUES(1); JUMP_TO_JUMP_TARGET(); } @@ -10302,13 +10254,13 @@ SET_CURRENT_CACHED_VALUES(2); stack_pointer += -1; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _ITER_CHECK_TUPLE_r22: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef null_or_index; _PyStackRef iter; _PyStackRef _stack_item_0 = _tos_cache0; @@ -10318,6 +10270,8 @@ PyObject *iter_o = PyStackRef_AsPyObjectBorrow(iter); if (Py_TYPE(iter_o) != &PyTuple_Type) { UOP_STAT_INC(uopcode, miss); + _tos_cache1 = null_or_index; + _tos_cache0 = iter; SET_CURRENT_CACHED_VALUES(2); JUMP_TO_JUMP_TARGET(); } @@ -10325,13 +10279,13 @@ _tos_cache1 = null_or_index; _tos_cache0 = iter; SET_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _ITER_CHECK_TUPLE_r33: { CHECK_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef null_or_index; _PyStackRef iter; _PyStackRef _stack_item_0 = _tos_cache0; @@ -10342,6 +10296,9 @@ PyObject *iter_o = PyStackRef_AsPyObjectBorrow(iter); if (Py_TYPE(iter_o) != &PyTuple_Type) { UOP_STAT_INC(uopcode, miss); + _tos_cache2 = null_or_index; + _tos_cache1 = iter; + _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(3); JUMP_TO_JUMP_TARGET(); } @@ -10350,7 +10307,7 @@ _tos_cache1 = iter; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } @@ -10358,7 +10315,7 @@ case _GUARD_NOT_EXHAUSTED_TUPLE_r02: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef null_or_index; _PyStackRef iter; null_or_index = stack_pointer[-1]; @@ -10375,13 +10332,13 @@ SET_CURRENT_CACHED_VALUES(2); stack_pointer += -2; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_NOT_EXHAUSTED_TUPLE_r12: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef null_or_index; _PyStackRef iter; _PyStackRef _stack_item_0 = _tos_cache0; @@ -10391,6 +10348,7 @@ assert(Py_TYPE(tuple_o) == &PyTuple_Type); if ((size_t)PyStackRef_UntagInt(null_or_index) >= (size_t)PyTuple_GET_SIZE(tuple_o)) { UOP_STAT_INC(uopcode, miss); + _tos_cache0 = null_or_index; SET_CURRENT_CACHED_VALUES(1); JUMP_TO_JUMP_TARGET(); } @@ -10399,13 +10357,13 @@ SET_CURRENT_CACHED_VALUES(2); stack_pointer += -1; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_NOT_EXHAUSTED_TUPLE_r22: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef null_or_index; _PyStackRef iter; _PyStackRef _stack_item_0 = _tos_cache0; @@ -10416,19 +10374,21 @@ assert(Py_TYPE(tuple_o) == &PyTuple_Type); if ((size_t)PyStackRef_UntagInt(null_or_index) >= (size_t)PyTuple_GET_SIZE(tuple_o)) { UOP_STAT_INC(uopcode, miss); + _tos_cache1 = null_or_index; + _tos_cache0 = iter; SET_CURRENT_CACHED_VALUES(2); JUMP_TO_JUMP_TARGET(); } _tos_cache1 = null_or_index; _tos_cache0 = iter; SET_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_NOT_EXHAUSTED_TUPLE_r33: { CHECK_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef null_or_index; _PyStackRef iter; _PyStackRef _stack_item_0 = _tos_cache0; @@ -10440,6 +10400,9 @@ assert(Py_TYPE(tuple_o) == &PyTuple_Type); if ((size_t)PyStackRef_UntagInt(null_or_index) >= (size_t)PyTuple_GET_SIZE(tuple_o)) { UOP_STAT_INC(uopcode, miss); + _tos_cache2 = null_or_index; + _tos_cache1 = iter; + _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(3); JUMP_TO_JUMP_TARGET(); } @@ -10447,13 +10410,13 @@ _tos_cache1 = iter; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _ITER_NEXT_TUPLE_r03: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef null_or_index; _PyStackRef iter; _PyStackRef next; @@ -10471,13 +10434,13 @@ SET_CURRENT_CACHED_VALUES(3); stack_pointer += -2; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _ITER_NEXT_TUPLE_r13: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef null_or_index; _PyStackRef iter; _PyStackRef next; @@ -10496,13 +10459,13 @@ SET_CURRENT_CACHED_VALUES(3); stack_pointer += -1; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _ITER_NEXT_TUPLE_r23: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef null_or_index; _PyStackRef iter; _PyStackRef next; @@ -10520,13 +10483,13 @@ _tos_cache1 = null_or_index; _tos_cache0 = iter; SET_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _ITER_CHECK_RANGE_r02: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef iter; iter = stack_pointer[-2]; _PyRangeIterObject *r = (_PyRangeIterObject *)PyStackRef_AsPyObjectBorrow(iter); @@ -10547,25 +10510,27 @@ SET_CURRENT_CACHED_VALUES(2); stack_pointer += -2; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _ITER_CHECK_RANGE_r12: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef iter; _PyStackRef _stack_item_0 = _tos_cache0; iter = stack_pointer[-1]; _PyRangeIterObject *r = (_PyRangeIterObject *)PyStackRef_AsPyObjectBorrow(iter); if (Py_TYPE(r) != &PyRangeIter_Type) { UOP_STAT_INC(uopcode, miss); + _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(1); JUMP_TO_JUMP_TARGET(); } #ifdef Py_GIL_DISABLED if (!_PyObject_IsUniquelyReferenced((PyObject *)r)) { UOP_STAT_INC(uopcode, miss); + _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(1); JUMP_TO_JUMP_TARGET(); } @@ -10575,13 +10540,13 @@ SET_CURRENT_CACHED_VALUES(2); stack_pointer += -1; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _ITER_CHECK_RANGE_r22: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef iter; _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; @@ -10589,12 +10554,16 @@ _PyRangeIterObject *r = (_PyRangeIterObject *)PyStackRef_AsPyObjectBorrow(iter); if (Py_TYPE(r) != &PyRangeIter_Type) { UOP_STAT_INC(uopcode, miss); + _tos_cache1 = _stack_item_1; + _tos_cache0 = iter; SET_CURRENT_CACHED_VALUES(2); JUMP_TO_JUMP_TARGET(); } #ifdef Py_GIL_DISABLED if (!_PyObject_IsUniquelyReferenced((PyObject *)r)) { UOP_STAT_INC(uopcode, miss); + _tos_cache1 = _stack_item_1; + _tos_cache0 = iter; SET_CURRENT_CACHED_VALUES(2); JUMP_TO_JUMP_TARGET(); } @@ -10602,13 +10571,13 @@ _tos_cache1 = _stack_item_1; _tos_cache0 = iter; SET_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _ITER_CHECK_RANGE_r33: { CHECK_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef iter; _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; @@ -10617,12 +10586,18 @@ _PyRangeIterObject *r = (_PyRangeIterObject *)PyStackRef_AsPyObjectBorrow(iter); if (Py_TYPE(r) != &PyRangeIter_Type) { UOP_STAT_INC(uopcode, miss); + _tos_cache2 = _stack_item_2; + _tos_cache1 = iter; + _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(3); JUMP_TO_JUMP_TARGET(); } #ifdef Py_GIL_DISABLED if (!_PyObject_IsUniquelyReferenced((PyObject *)r)) { UOP_STAT_INC(uopcode, miss); + _tos_cache2 = _stack_item_2; + _tos_cache1 = iter; + _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(3); JUMP_TO_JUMP_TARGET(); } @@ -10631,7 +10606,7 @@ _tos_cache1 = iter; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } @@ -10639,7 +10614,7 @@ case _GUARD_NOT_EXHAUSTED_RANGE_r02: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef iter; iter = stack_pointer[-2]; _PyRangeIterObject *r = (_PyRangeIterObject *)PyStackRef_AsPyObjectBorrow(iter); @@ -10654,13 +10629,13 @@ SET_CURRENT_CACHED_VALUES(2); stack_pointer += -2; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_NOT_EXHAUSTED_RANGE_r12: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef iter; _PyStackRef _stack_item_0 = _tos_cache0; iter = stack_pointer[-1]; @@ -10668,6 +10643,7 @@ assert(Py_TYPE(r) == &PyRangeIter_Type); if (r->len <= 0) { UOP_STAT_INC(uopcode, miss); + _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(1); JUMP_TO_JUMP_TARGET(); } @@ -10676,13 +10652,13 @@ SET_CURRENT_CACHED_VALUES(2); stack_pointer += -1; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_NOT_EXHAUSTED_RANGE_r22: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef iter; _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; @@ -10691,19 +10667,21 @@ assert(Py_TYPE(r) == &PyRangeIter_Type); if (r->len <= 0) { UOP_STAT_INC(uopcode, miss); + _tos_cache1 = _stack_item_1; + _tos_cache0 = iter; SET_CURRENT_CACHED_VALUES(2); JUMP_TO_JUMP_TARGET(); } _tos_cache1 = _stack_item_1; _tos_cache0 = iter; SET_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_NOT_EXHAUSTED_RANGE_r33: { CHECK_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef iter; _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; @@ -10713,6 +10691,9 @@ assert(Py_TYPE(r) == &PyRangeIter_Type); if (r->len <= 0) { UOP_STAT_INC(uopcode, miss); + _tos_cache2 = _stack_item_2; + _tos_cache1 = iter; + _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(3); JUMP_TO_JUMP_TARGET(); } @@ -10720,13 +10701,13 @@ _tos_cache1 = iter; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _ITER_NEXT_RANGE_r03: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef iter; _PyStackRef next; iter = stack_pointer[-2]; @@ -10751,13 +10732,13 @@ SET_CURRENT_CACHED_VALUES(3); stack_pointer += -2; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _ITER_NEXT_RANGE_r13: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef iter; _PyStackRef next; _PyStackRef _stack_item_0 = _tos_cache0; @@ -10786,13 +10767,13 @@ SET_CURRENT_CACHED_VALUES(3); stack_pointer += -1; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _ITER_NEXT_RANGE_r23: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef iter; _PyStackRef next; _PyStackRef _stack_item_0 = _tos_cache0; @@ -10821,13 +10802,13 @@ _tos_cache1 = _stack_item_1; _tos_cache0 = iter; SET_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _FOR_ITER_GEN_FRAME_r23: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef iter; _PyStackRef gen_frame; _PyStackRef _stack_item_0 = _tos_cache0; @@ -10837,6 +10818,8 @@ PyGenObject *gen = (PyGenObject *)PyStackRef_AsPyObjectBorrow(iter); if (Py_TYPE(gen) != &PyGen_Type) { UOP_STAT_INC(uopcode, miss); + _tos_cache1 = _stack_item_1; + _tos_cache0 = iter; SET_CURRENT_CACHED_VALUES(2); JUMP_TO_JUMP_TARGET(); } @@ -10844,12 +10827,16 @@ if (!_PyObject_IsUniquelyReferenced((PyObject *)gen)) { UOP_STAT_INC(uopcode, miss); + _tos_cache1 = _stack_item_1; + _tos_cache0 = iter; SET_CURRENT_CACHED_VALUES(2); JUMP_TO_JUMP_TARGET(); } #endif if (gen->gi_frame_state >= FRAME_EXECUTING) { UOP_STAT_INC(uopcode, miss); + _tos_cache1 = _stack_item_1; + _tos_cache0 = iter; SET_CURRENT_CACHED_VALUES(2); JUMP_TO_JUMP_TARGET(); } @@ -10866,13 +10853,13 @@ _tos_cache1 = _stack_item_1; _tos_cache0 = iter; SET_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _INSERT_NULL_r10: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef self; _PyStackRef *method_and_self; _PyStackRef _stack_item_0 = _tos_cache0; @@ -10883,13 +10870,13 @@ SET_CURRENT_CACHED_VALUES(0); stack_pointer += 2; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _LOAD_SPECIAL_r00: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef *method_and_self; oparg = CURRENT_OPARG(); method_and_self = &stack_pointer[-2]; @@ -10918,13 +10905,13 @@ _tos_cache1 = PyStackRef_ZERO_BITS; _tos_cache2 = PyStackRef_ZERO_BITS; SET_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _WITH_EXCEPT_START_r33: { CHECK_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef val; _PyStackRef lasti; _PyStackRef exit_self; @@ -10971,13 +10958,13 @@ SET_CURRENT_CACHED_VALUES(3); stack_pointer += -2; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _PUSH_EXC_INFO_r02: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef exc; _PyStackRef prev_exc; _PyStackRef new_exc; @@ -10997,13 +10984,13 @@ SET_CURRENT_CACHED_VALUES(2); stack_pointer += -1; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _PUSH_EXC_INFO_r12: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef exc; _PyStackRef prev_exc; _PyStackRef new_exc; @@ -11022,13 +11009,13 @@ _tos_cache1 = new_exc; _tos_cache0 = prev_exc; SET_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _PUSH_EXC_INFO_r23: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef exc; _PyStackRef prev_exc; _PyStackRef new_exc; @@ -11049,13 +11036,13 @@ _tos_cache1 = prev_exc; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_DORV_VALUES_INST_ATTR_FROM_DICT_r01: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef owner; owner = stack_pointer[-1]; PyObject *owner_o = PyStackRef_AsPyObjectBorrow(owner); @@ -11070,13 +11057,13 @@ SET_CURRENT_CACHED_VALUES(1); stack_pointer += -1; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_DORV_VALUES_INST_ATTR_FROM_DICT_r11: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef owner; _PyStackRef _stack_item_0 = _tos_cache0; owner = _stack_item_0; @@ -11085,18 +11072,19 @@ PyDictValues *ivs = _PyObject_InlineValues(owner_o); if (!FT_ATOMIC_LOAD_UINT8(ivs->valid)) { UOP_STAT_INC(uopcode, miss); + _tos_cache0 = owner; SET_CURRENT_CACHED_VALUES(1); JUMP_TO_JUMP_TARGET(); } _tos_cache0 = owner; SET_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_DORV_VALUES_INST_ATTR_FROM_DICT_r22: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef owner; _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; @@ -11106,19 +11094,21 @@ PyDictValues *ivs = _PyObject_InlineValues(owner_o); if (!FT_ATOMIC_LOAD_UINT8(ivs->valid)) { UOP_STAT_INC(uopcode, miss); + _tos_cache1 = owner; + _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(2); JUMP_TO_JUMP_TARGET(); } _tos_cache1 = owner; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_DORV_VALUES_INST_ATTR_FROM_DICT_r33: { CHECK_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef owner; _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; @@ -11129,6 +11119,9 @@ PyDictValues *ivs = _PyObject_InlineValues(owner_o); if (!FT_ATOMIC_LOAD_UINT8(ivs->valid)) { UOP_STAT_INC(uopcode, miss); + _tos_cache2 = owner; + _tos_cache1 = _stack_item_1; + _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(3); JUMP_TO_JUMP_TARGET(); } @@ -11136,13 +11129,13 @@ _tos_cache1 = _stack_item_1; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_KEYS_VERSION_r01: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef owner; owner = stack_pointer[-1]; uint32_t keys_version = (uint32_t)CURRENT_OPERAND0_32(); @@ -11158,13 +11151,13 @@ SET_CURRENT_CACHED_VALUES(1); stack_pointer += -1; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_KEYS_VERSION_r11: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef owner; _PyStackRef _stack_item_0 = _tos_cache0; owner = _stack_item_0; @@ -11174,18 +11167,19 @@ PyDictKeysObject *keys = owner_heap_type->ht_cached_keys; if (FT_ATOMIC_LOAD_UINT32_RELAXED(keys->dk_version) != keys_version) { UOP_STAT_INC(uopcode, miss); + _tos_cache0 = owner; SET_CURRENT_CACHED_VALUES(1); JUMP_TO_JUMP_TARGET(); } _tos_cache0 = owner; SET_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_KEYS_VERSION_r22: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef owner; _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; @@ -11196,19 +11190,21 @@ PyDictKeysObject *keys = owner_heap_type->ht_cached_keys; if (FT_ATOMIC_LOAD_UINT32_RELAXED(keys->dk_version) != keys_version) { UOP_STAT_INC(uopcode, miss); + _tos_cache1 = owner; + _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(2); JUMP_TO_JUMP_TARGET(); } _tos_cache1 = owner; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_KEYS_VERSION_r33: { CHECK_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef owner; _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; @@ -11220,6 +11216,9 @@ PyDictKeysObject *keys = owner_heap_type->ht_cached_keys; if (FT_ATOMIC_LOAD_UINT32_RELAXED(keys->dk_version) != keys_version) { UOP_STAT_INC(uopcode, miss); + _tos_cache2 = owner; + _tos_cache1 = _stack_item_1; + _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(3); JUMP_TO_JUMP_TARGET(); } @@ -11227,13 +11226,13 @@ _tos_cache1 = _stack_item_1; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _LOAD_ATTR_METHOD_WITH_VALUES_r02: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef owner; _PyStackRef attr; _PyStackRef self; @@ -11251,13 +11250,13 @@ SET_CURRENT_CACHED_VALUES(2); stack_pointer += -1; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _LOAD_ATTR_METHOD_WITH_VALUES_r12: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef owner; _PyStackRef attr; _PyStackRef self; @@ -11274,13 +11273,13 @@ _tos_cache1 = self; _tos_cache0 = attr; SET_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _LOAD_ATTR_METHOD_WITH_VALUES_r23: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef owner; _PyStackRef attr; _PyStackRef self; @@ -11299,13 +11298,13 @@ _tos_cache1 = attr; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _LOAD_ATTR_METHOD_NO_DICT_r02: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef owner; _PyStackRef attr; _PyStackRef self; @@ -11324,13 +11323,13 @@ SET_CURRENT_CACHED_VALUES(2); stack_pointer += -1; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _LOAD_ATTR_METHOD_NO_DICT_r12: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef owner; _PyStackRef attr; _PyStackRef self; @@ -11348,13 +11347,13 @@ _tos_cache1 = self; _tos_cache0 = attr; SET_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _LOAD_ATTR_METHOD_NO_DICT_r23: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef owner; _PyStackRef attr; _PyStackRef self; @@ -11374,13 +11373,13 @@ _tos_cache1 = attr; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES_r11: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef owner; _PyStackRef attr; _PyStackRef _stack_item_0 = _tos_cache0; @@ -11398,13 +11397,13 @@ _tos_cache1 = PyStackRef_ZERO_BITS; _tos_cache2 = PyStackRef_ZERO_BITS; SET_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _LOAD_ATTR_NONDESCRIPTOR_NO_DICT_r11: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef owner; _PyStackRef attr; _PyStackRef _stack_item_0 = _tos_cache0; @@ -11423,13 +11422,13 @@ _tos_cache1 = PyStackRef_ZERO_BITS; _tos_cache2 = PyStackRef_ZERO_BITS; SET_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _CHECK_ATTR_METHOD_LAZY_DICT_r01: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef owner; owner = stack_pointer[-1]; uint16_t dictoffset = (uint16_t)CURRENT_OPERAND0_16(); @@ -11444,13 +11443,13 @@ SET_CURRENT_CACHED_VALUES(1); stack_pointer += -1; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _CHECK_ATTR_METHOD_LAZY_DICT_r11: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef owner; _PyStackRef _stack_item_0 = _tos_cache0; owner = _stack_item_0; @@ -11459,18 +11458,19 @@ PyObject *dict = FT_ATOMIC_LOAD_PTR_ACQUIRE(*(PyObject **)ptr); if (dict != NULL) { UOP_STAT_INC(uopcode, miss); + _tos_cache0 = owner; SET_CURRENT_CACHED_VALUES(1); JUMP_TO_JUMP_TARGET(); } _tos_cache0 = owner; SET_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _CHECK_ATTR_METHOD_LAZY_DICT_r22: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef owner; _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; @@ -11480,19 +11480,21 @@ PyObject *dict = FT_ATOMIC_LOAD_PTR_ACQUIRE(*(PyObject **)ptr); if (dict != NULL) { UOP_STAT_INC(uopcode, miss); + _tos_cache1 = owner; + _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(2); JUMP_TO_JUMP_TARGET(); } _tos_cache1 = owner; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _CHECK_ATTR_METHOD_LAZY_DICT_r33: { CHECK_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef owner; _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; @@ -11503,6 +11505,9 @@ PyObject *dict = FT_ATOMIC_LOAD_PTR_ACQUIRE(*(PyObject **)ptr); if (dict != NULL) { UOP_STAT_INC(uopcode, miss); + _tos_cache2 = owner; + _tos_cache1 = _stack_item_1; + _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(3); JUMP_TO_JUMP_TARGET(); } @@ -11510,13 +11515,13 @@ _tos_cache1 = _stack_item_1; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _LOAD_ATTR_METHOD_LAZY_DICT_r02: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef owner; _PyStackRef attr; _PyStackRef self; @@ -11534,13 +11539,13 @@ SET_CURRENT_CACHED_VALUES(2); stack_pointer += -1; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _LOAD_ATTR_METHOD_LAZY_DICT_r12: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef owner; _PyStackRef attr; _PyStackRef self; @@ -11557,13 +11562,13 @@ _tos_cache1 = self; _tos_cache0 = attr; SET_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _LOAD_ATTR_METHOD_LAZY_DICT_r23: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef owner; _PyStackRef attr; _PyStackRef self; @@ -11582,13 +11587,13 @@ _tos_cache1 = attr; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _MAYBE_EXPAND_METHOD_r00: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef self_or_null; _PyStackRef callable; oparg = CURRENT_OPARG(); @@ -11613,7 +11618,7 @@ SET_CURRENT_CACHED_VALUES(0); stack_pointer[-2 - oparg] = callable; stack_pointer[-1 - oparg] = self_or_null; - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } @@ -11623,7 +11628,7 @@ case _PY_FRAME_GENERAL_r01: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef *args; _PyStackRef self_or_null; _PyStackRef callable; @@ -11658,13 +11663,13 @@ _tos_cache1 = PyStackRef_ZERO_BITS; _tos_cache2 = PyStackRef_ZERO_BITS; SET_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _CHECK_FUNCTION_VERSION_r00: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef callable; oparg = CURRENT_OPARG(); callable = stack_pointer[-2 - oparg]; @@ -11682,13 +11687,13 @@ JUMP_TO_JUMP_TARGET(); } SET_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _CHECK_FUNCTION_VERSION_INLINE_r00: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); uint32_t func_version = (uint32_t)CURRENT_OPERAND0_32(); PyObject *callable_o = (PyObject *)CURRENT_OPERAND1_64(); assert(PyFunction_Check(callable_o)); @@ -11699,13 +11704,13 @@ JUMP_TO_JUMP_TARGET(); } SET_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _CHECK_FUNCTION_VERSION_INLINE_r11: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef _stack_item_0 = _tos_cache0; uint32_t func_version = (uint32_t)CURRENT_OPERAND0_32(); PyObject *callable_o = (PyObject *)CURRENT_OPERAND1_64(); @@ -11713,18 +11718,19 @@ PyFunctionObject *func = (PyFunctionObject *)callable_o; if (func->func_version != func_version) { UOP_STAT_INC(uopcode, miss); + _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(1); JUMP_TO_JUMP_TARGET(); } _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _CHECK_FUNCTION_VERSION_INLINE_r22: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; uint32_t func_version = (uint32_t)CURRENT_OPERAND0_32(); @@ -11733,19 +11739,21 @@ PyFunctionObject *func = (PyFunctionObject *)callable_o; if (func->func_version != func_version) { UOP_STAT_INC(uopcode, miss); + _tos_cache1 = _stack_item_1; + _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(2); JUMP_TO_JUMP_TARGET(); } _tos_cache1 = _stack_item_1; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _CHECK_FUNCTION_VERSION_INLINE_r33: { CHECK_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; _PyStackRef _stack_item_2 = _tos_cache2; @@ -11755,6 +11763,9 @@ PyFunctionObject *func = (PyFunctionObject *)callable_o; if (func->func_version != func_version) { UOP_STAT_INC(uopcode, miss); + _tos_cache2 = _stack_item_2; + _tos_cache1 = _stack_item_1; + _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(3); JUMP_TO_JUMP_TARGET(); } @@ -11762,13 +11773,13 @@ _tos_cache1 = _stack_item_1; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _CHECK_METHOD_VERSION_r00: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef null; _PyStackRef callable; oparg = CURRENT_OPARG(); @@ -11798,13 +11809,13 @@ JUMP_TO_JUMP_TARGET(); } SET_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _EXPAND_METHOD_r00: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef self_or_null; _PyStackRef callable; oparg = CURRENT_OPARG(); @@ -11826,13 +11837,13 @@ _tos_cache1 = PyStackRef_ZERO_BITS; _tos_cache2 = PyStackRef_ZERO_BITS; SET_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _CHECK_IS_NOT_PY_CALLABLE_r00: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef callable; oparg = CURRENT_OPARG(); callable = stack_pointer[-2 - oparg]; @@ -11848,13 +11859,13 @@ JUMP_TO_JUMP_TARGET(); } SET_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _CALL_NON_PY_GENERAL_r01: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef *args; _PyStackRef self_or_null; _PyStackRef callable; @@ -11892,13 +11903,13 @@ SET_CURRENT_CACHED_VALUES(1); stack_pointer += -2 - oparg; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _CHECK_CALL_BOUND_METHOD_EXACT_ARGS_r00: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef null; _PyStackRef callable; oparg = CURRENT_OPARG(); @@ -11915,13 +11926,13 @@ JUMP_TO_JUMP_TARGET(); } SET_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _INIT_CALL_BOUND_METHOD_EXACT_ARGS_r00: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef self_or_null; _PyStackRef callable; oparg = CURRENT_OPARG(); @@ -11942,63 +11953,69 @@ _tos_cache1 = PyStackRef_ZERO_BITS; _tos_cache2 = PyStackRef_ZERO_BITS; SET_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _CHECK_PEP_523_r00: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); if (tstate->interp->eval_frame) { UOP_STAT_INC(uopcode, miss); SET_CURRENT_CACHED_VALUES(0); JUMP_TO_JUMP_TARGET(); } SET_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _CHECK_PEP_523_r11: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef _stack_item_0 = _tos_cache0; if (tstate->interp->eval_frame) { UOP_STAT_INC(uopcode, miss); + _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(1); JUMP_TO_JUMP_TARGET(); } _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _CHECK_PEP_523_r22: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; if (tstate->interp->eval_frame) { UOP_STAT_INC(uopcode, miss); + _tos_cache1 = _stack_item_1; + _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(2); JUMP_TO_JUMP_TARGET(); } _tos_cache1 = _stack_item_1; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _CHECK_PEP_523_r33: { CHECK_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; _PyStackRef _stack_item_2 = _tos_cache2; if (tstate->interp->eval_frame) { UOP_STAT_INC(uopcode, miss); + _tos_cache2 = _stack_item_2; + _tos_cache1 = _stack_item_1; + _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(3); JUMP_TO_JUMP_TARGET(); } @@ -12006,13 +12023,13 @@ _tos_cache1 = _stack_item_1; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _CHECK_FUNCTION_EXACT_ARGS_r00: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef self_or_null; _PyStackRef callable; oparg = CURRENT_OPARG(); @@ -12028,13 +12045,13 @@ JUMP_TO_JUMP_TARGET(); } SET_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _CHECK_STACK_SPACE_r00: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef callable; oparg = CURRENT_OPARG(); callable = stack_pointer[-2 - oparg]; @@ -12047,63 +12064,69 @@ JUMP_TO_JUMP_TARGET(); } SET_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _CHECK_RECURSION_REMAINING_r00: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); if (tstate->py_recursion_remaining <= 1) { UOP_STAT_INC(uopcode, miss); SET_CURRENT_CACHED_VALUES(0); JUMP_TO_JUMP_TARGET(); } SET_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _CHECK_RECURSION_REMAINING_r11: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef _stack_item_0 = _tos_cache0; if (tstate->py_recursion_remaining <= 1) { UOP_STAT_INC(uopcode, miss); + _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(1); JUMP_TO_JUMP_TARGET(); } _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _CHECK_RECURSION_REMAINING_r22: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; if (tstate->py_recursion_remaining <= 1) { UOP_STAT_INC(uopcode, miss); + _tos_cache1 = _stack_item_1; + _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(2); JUMP_TO_JUMP_TARGET(); } _tos_cache1 = _stack_item_1; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _CHECK_RECURSION_REMAINING_r33: { CHECK_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; _PyStackRef _stack_item_2 = _tos_cache2; if (tstate->py_recursion_remaining <= 1) { UOP_STAT_INC(uopcode, miss); + _tos_cache2 = _stack_item_2; + _tos_cache1 = _stack_item_1; + _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(3); JUMP_TO_JUMP_TARGET(); } @@ -12111,13 +12134,13 @@ _tos_cache1 = _stack_item_1; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _INIT_CALL_PY_EXACT_ARGS_0_r01: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef *args; _PyStackRef self_or_null; _PyStackRef callable; @@ -12140,13 +12163,13 @@ SET_CURRENT_CACHED_VALUES(1); stack_pointer += -2 - oparg; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _INIT_CALL_PY_EXACT_ARGS_1_r01: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef *args; _PyStackRef self_or_null; _PyStackRef callable; @@ -12169,13 +12192,13 @@ SET_CURRENT_CACHED_VALUES(1); stack_pointer += -2 - oparg; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _INIT_CALL_PY_EXACT_ARGS_2_r01: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef *args; _PyStackRef self_or_null; _PyStackRef callable; @@ -12198,13 +12221,13 @@ SET_CURRENT_CACHED_VALUES(1); stack_pointer += -2 - oparg; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _INIT_CALL_PY_EXACT_ARGS_3_r01: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef *args; _PyStackRef self_or_null; _PyStackRef callable; @@ -12227,13 +12250,13 @@ SET_CURRENT_CACHED_VALUES(1); stack_pointer += -2 - oparg; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _INIT_CALL_PY_EXACT_ARGS_4_r01: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef *args; _PyStackRef self_or_null; _PyStackRef callable; @@ -12256,13 +12279,13 @@ SET_CURRENT_CACHED_VALUES(1); stack_pointer += -2 - oparg; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _INIT_CALL_PY_EXACT_ARGS_r01: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef *args; _PyStackRef self_or_null; _PyStackRef callable; @@ -12284,13 +12307,13 @@ SET_CURRENT_CACHED_VALUES(1); stack_pointer += -2 - oparg; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _PUSH_FRAME_r10: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef new_frame; _PyStackRef _stack_item_0 = _tos_cache0; new_frame = _stack_item_0; @@ -12305,13 +12328,13 @@ LOAD_IP(0); LLTRACE_RESUME_FRAME(); SET_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_NOS_NULL_r02: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef null; null = stack_pointer[-2]; if (!PyStackRef_IsNull(null)) { @@ -12324,18 +12347,19 @@ SET_CURRENT_CACHED_VALUES(2); stack_pointer += -2; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_NOS_NULL_r12: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef null; _PyStackRef _stack_item_0 = _tos_cache0; null = stack_pointer[-1]; if (!PyStackRef_IsNull(null)) { UOP_STAT_INC(uopcode, miss); + _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(1); JUMP_TO_JUMP_TARGET(); } @@ -12344,32 +12368,34 @@ SET_CURRENT_CACHED_VALUES(2); stack_pointer += -1; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_NOS_NULL_r22: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef null; _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; null = _stack_item_0; if (!PyStackRef_IsNull(null)) { UOP_STAT_INC(uopcode, miss); + _tos_cache1 = _stack_item_1; + _tos_cache0 = null; SET_CURRENT_CACHED_VALUES(2); JUMP_TO_JUMP_TARGET(); } _tos_cache1 = _stack_item_1; _tos_cache0 = null; SET_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_NOS_NULL_r33: { CHECK_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef null; _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; @@ -12377,6 +12403,9 @@ null = _stack_item_1; if (!PyStackRef_IsNull(null)) { UOP_STAT_INC(uopcode, miss); + _tos_cache2 = _stack_item_2; + _tos_cache1 = null; + _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(3); JUMP_TO_JUMP_TARGET(); } @@ -12384,13 +12413,13 @@ _tos_cache1 = null; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_NOS_NOT_NULL_r02: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef nos; nos = stack_pointer[-2]; PyObject *o = PyStackRef_AsPyObjectBorrow(nos); @@ -12404,19 +12433,20 @@ SET_CURRENT_CACHED_VALUES(2); stack_pointer += -2; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_NOS_NOT_NULL_r12: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef nos; _PyStackRef _stack_item_0 = _tos_cache0; nos = stack_pointer[-1]; PyObject *o = PyStackRef_AsPyObjectBorrow(nos); if (o == NULL) { UOP_STAT_INC(uopcode, miss); + _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(1); JUMP_TO_JUMP_TARGET(); } @@ -12425,13 +12455,13 @@ SET_CURRENT_CACHED_VALUES(2); stack_pointer += -1; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_NOS_NOT_NULL_r22: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef nos; _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; @@ -12439,19 +12469,21 @@ PyObject *o = PyStackRef_AsPyObjectBorrow(nos); if (o == NULL) { UOP_STAT_INC(uopcode, miss); + _tos_cache1 = _stack_item_1; + _tos_cache0 = nos; SET_CURRENT_CACHED_VALUES(2); JUMP_TO_JUMP_TARGET(); } _tos_cache1 = _stack_item_1; _tos_cache0 = nos; SET_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_NOS_NOT_NULL_r33: { CHECK_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef nos; _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; @@ -12460,6 +12492,9 @@ PyObject *o = PyStackRef_AsPyObjectBorrow(nos); if (o == NULL) { UOP_STAT_INC(uopcode, miss); + _tos_cache2 = _stack_item_2; + _tos_cache1 = nos; + _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(3); JUMP_TO_JUMP_TARGET(); } @@ -12467,13 +12502,13 @@ _tos_cache1 = nos; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_THIRD_NULL_r03: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef null; null = stack_pointer[-3]; if (!PyStackRef_IsNull(null)) { @@ -12487,18 +12522,19 @@ SET_CURRENT_CACHED_VALUES(3); stack_pointer += -3; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_THIRD_NULL_r13: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef null; _PyStackRef _stack_item_0 = _tos_cache0; null = stack_pointer[-2]; if (!PyStackRef_IsNull(null)) { UOP_STAT_INC(uopcode, miss); + _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(1); JUMP_TO_JUMP_TARGET(); } @@ -12508,19 +12544,21 @@ SET_CURRENT_CACHED_VALUES(3); stack_pointer += -2; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_THIRD_NULL_r23: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef null; _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; null = stack_pointer[-1]; if (!PyStackRef_IsNull(null)) { UOP_STAT_INC(uopcode, miss); + _tos_cache1 = _stack_item_1; + _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(2); JUMP_TO_JUMP_TARGET(); } @@ -12530,13 +12568,13 @@ SET_CURRENT_CACHED_VALUES(3); stack_pointer += -1; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_THIRD_NULL_r33: { CHECK_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef null; _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; @@ -12544,6 +12582,9 @@ null = _stack_item_0; if (!PyStackRef_IsNull(null)) { UOP_STAT_INC(uopcode, miss); + _tos_cache2 = _stack_item_2; + _tos_cache1 = _stack_item_1; + _tos_cache0 = null; SET_CURRENT_CACHED_VALUES(3); JUMP_TO_JUMP_TARGET(); } @@ -12551,13 +12592,13 @@ _tos_cache1 = _stack_item_1; _tos_cache0 = null; SET_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_CALLABLE_TYPE_1_r03: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef callable; callable = stack_pointer[-3]; PyObject *callable_o = PyStackRef_AsPyObjectBorrow(callable); @@ -12572,19 +12613,20 @@ SET_CURRENT_CACHED_VALUES(3); stack_pointer += -3; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_CALLABLE_TYPE_1_r13: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef callable; _PyStackRef _stack_item_0 = _tos_cache0; callable = stack_pointer[-2]; PyObject *callable_o = PyStackRef_AsPyObjectBorrow(callable); if (callable_o != (PyObject *)&PyType_Type) { UOP_STAT_INC(uopcode, miss); + _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(1); JUMP_TO_JUMP_TARGET(); } @@ -12594,13 +12636,13 @@ SET_CURRENT_CACHED_VALUES(3); stack_pointer += -2; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_CALLABLE_TYPE_1_r23: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef callable; _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; @@ -12608,6 +12650,8 @@ PyObject *callable_o = PyStackRef_AsPyObjectBorrow(callable); if (callable_o != (PyObject *)&PyType_Type) { UOP_STAT_INC(uopcode, miss); + _tos_cache1 = _stack_item_1; + _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(2); JUMP_TO_JUMP_TARGET(); } @@ -12617,13 +12661,13 @@ SET_CURRENT_CACHED_VALUES(3); stack_pointer += -1; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_CALLABLE_TYPE_1_r33: { CHECK_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef callable; _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; @@ -12632,6 +12676,9 @@ PyObject *callable_o = PyStackRef_AsPyObjectBorrow(callable); if (callable_o != (PyObject *)&PyType_Type) { UOP_STAT_INC(uopcode, miss); + _tos_cache2 = _stack_item_2; + _tos_cache1 = _stack_item_1; + _tos_cache0 = callable; SET_CURRENT_CACHED_VALUES(3); JUMP_TO_JUMP_TARGET(); } @@ -12639,13 +12686,13 @@ _tos_cache1 = _stack_item_1; _tos_cache0 = callable; SET_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _CALL_TYPE_1_r31: { CHECK_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef arg; _PyStackRef null; _PyStackRef callable; @@ -12675,13 +12722,13 @@ SET_CURRENT_CACHED_VALUES(1); stack_pointer += -1; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_CALLABLE_STR_1_r03: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef callable; callable = stack_pointer[-3]; PyObject *callable_o = PyStackRef_AsPyObjectBorrow(callable); @@ -12696,19 +12743,20 @@ SET_CURRENT_CACHED_VALUES(3); stack_pointer += -3; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_CALLABLE_STR_1_r13: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef callable; _PyStackRef _stack_item_0 = _tos_cache0; callable = stack_pointer[-2]; PyObject *callable_o = PyStackRef_AsPyObjectBorrow(callable); if (callable_o != (PyObject *)&PyUnicode_Type) { UOP_STAT_INC(uopcode, miss); + _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(1); JUMP_TO_JUMP_TARGET(); } @@ -12718,13 +12766,13 @@ SET_CURRENT_CACHED_VALUES(3); stack_pointer += -2; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_CALLABLE_STR_1_r23: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef callable; _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; @@ -12732,6 +12780,8 @@ PyObject *callable_o = PyStackRef_AsPyObjectBorrow(callable); if (callable_o != (PyObject *)&PyUnicode_Type) { UOP_STAT_INC(uopcode, miss); + _tos_cache1 = _stack_item_1; + _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(2); JUMP_TO_JUMP_TARGET(); } @@ -12741,13 +12791,13 @@ SET_CURRENT_CACHED_VALUES(3); stack_pointer += -1; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_CALLABLE_STR_1_r33: { CHECK_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef callable; _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; @@ -12756,6 +12806,9 @@ PyObject *callable_o = PyStackRef_AsPyObjectBorrow(callable); if (callable_o != (PyObject *)&PyUnicode_Type) { UOP_STAT_INC(uopcode, miss); + _tos_cache2 = _stack_item_2; + _tos_cache1 = _stack_item_1; + _tos_cache0 = callable; SET_CURRENT_CACHED_VALUES(3); JUMP_TO_JUMP_TARGET(); } @@ -12763,13 +12816,13 @@ _tos_cache1 = _stack_item_1; _tos_cache0 = callable; SET_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _CALL_STR_1_r32: { CHECK_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef arg; _PyStackRef res; _PyStackRef a; @@ -12801,13 +12854,13 @@ SET_CURRENT_CACHED_VALUES(2); stack_pointer += -3; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_CALLABLE_TUPLE_1_r03: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef callable; callable = stack_pointer[-3]; PyObject *callable_o = PyStackRef_AsPyObjectBorrow(callable); @@ -12822,19 +12875,20 @@ SET_CURRENT_CACHED_VALUES(3); stack_pointer += -3; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_CALLABLE_TUPLE_1_r13: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef callable; _PyStackRef _stack_item_0 = _tos_cache0; callable = stack_pointer[-2]; PyObject *callable_o = PyStackRef_AsPyObjectBorrow(callable); if (callable_o != (PyObject *)&PyTuple_Type) { UOP_STAT_INC(uopcode, miss); + _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(1); JUMP_TO_JUMP_TARGET(); } @@ -12844,13 +12898,13 @@ SET_CURRENT_CACHED_VALUES(3); stack_pointer += -2; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_CALLABLE_TUPLE_1_r23: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef callable; _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; @@ -12858,6 +12912,8 @@ PyObject *callable_o = PyStackRef_AsPyObjectBorrow(callable); if (callable_o != (PyObject *)&PyTuple_Type) { UOP_STAT_INC(uopcode, miss); + _tos_cache1 = _stack_item_1; + _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(2); JUMP_TO_JUMP_TARGET(); } @@ -12867,13 +12923,13 @@ SET_CURRENT_CACHED_VALUES(3); stack_pointer += -1; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_CALLABLE_TUPLE_1_r33: { CHECK_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef callable; _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; @@ -12882,6 +12938,9 @@ PyObject *callable_o = PyStackRef_AsPyObjectBorrow(callable); if (callable_o != (PyObject *)&PyTuple_Type) { UOP_STAT_INC(uopcode, miss); + _tos_cache2 = _stack_item_2; + _tos_cache1 = _stack_item_1; + _tos_cache0 = callable; SET_CURRENT_CACHED_VALUES(3); JUMP_TO_JUMP_TARGET(); } @@ -12889,13 +12948,13 @@ _tos_cache1 = _stack_item_1; _tos_cache0 = callable; SET_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _CALL_TUPLE_1_r32: { CHECK_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef arg; _PyStackRef res; _PyStackRef a; @@ -12927,13 +12986,13 @@ SET_CURRENT_CACHED_VALUES(2); stack_pointer += -3; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _CHECK_AND_ALLOCATE_OBJECT_r00: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef self_or_null; _PyStackRef callable; oparg = CURRENT_OPARG(); @@ -12988,13 +13047,13 @@ _tos_cache1 = PyStackRef_ZERO_BITS; _tos_cache2 = PyStackRef_ZERO_BITS; SET_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _CREATE_INIT_FRAME_r01: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef *args; _PyStackRef self; _PyStackRef init; @@ -13030,13 +13089,13 @@ _tos_cache1 = PyStackRef_ZERO_BITS; _tos_cache2 = PyStackRef_ZERO_BITS; SET_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _EXIT_INIT_CHECK_r10: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef should_be_none; _PyStackRef _stack_item_0 = _tos_cache0; should_be_none = _stack_item_0; @@ -13056,13 +13115,13 @@ _tos_cache1 = PyStackRef_ZERO_BITS; _tos_cache2 = PyStackRef_ZERO_BITS; SET_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _CALL_BUILTIN_CLASS_r01: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef *args; _PyStackRef self_or_null; _PyStackRef callable; @@ -13109,13 +13168,13 @@ SET_CURRENT_CACHED_VALUES(1); stack_pointer += -2 - oparg; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _CALL_BUILTIN_O_r03: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef *args; _PyStackRef self_or_null; _PyStackRef callable; @@ -13173,13 +13232,13 @@ SET_CURRENT_CACHED_VALUES(3); stack_pointer += -2 - oparg; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _CALL_BUILTIN_FAST_r01: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef *args; _PyStackRef self_or_null; _PyStackRef callable; @@ -13226,13 +13285,13 @@ SET_CURRENT_CACHED_VALUES(1); stack_pointer += -2 - oparg; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _CALL_BUILTIN_FAST_WITH_KEYWORDS_r01: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef *args; _PyStackRef self_or_null; _PyStackRef callable; @@ -13275,13 +13334,13 @@ SET_CURRENT_CACHED_VALUES(1); stack_pointer += -2 - oparg; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_CALLABLE_LEN_r03: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef callable; callable = stack_pointer[-3]; PyObject *callable_o = PyStackRef_AsPyObjectBorrow(callable); @@ -13297,13 +13356,13 @@ SET_CURRENT_CACHED_VALUES(3); stack_pointer += -3; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_CALLABLE_LEN_r13: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef callable; _PyStackRef _stack_item_0 = _tos_cache0; callable = stack_pointer[-2]; @@ -13311,6 +13370,7 @@ PyInterpreterState *interp = tstate->interp; if (callable_o != interp->callable_cache.len) { UOP_STAT_INC(uopcode, miss); + _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(1); JUMP_TO_JUMP_TARGET(); } @@ -13320,13 +13380,13 @@ SET_CURRENT_CACHED_VALUES(3); stack_pointer += -2; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_CALLABLE_LEN_r23: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef callable; _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; @@ -13335,6 +13395,8 @@ PyInterpreterState *interp = tstate->interp; if (callable_o != interp->callable_cache.len) { UOP_STAT_INC(uopcode, miss); + _tos_cache1 = _stack_item_1; + _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(2); JUMP_TO_JUMP_TARGET(); } @@ -13344,13 +13406,13 @@ SET_CURRENT_CACHED_VALUES(3); stack_pointer += -1; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_CALLABLE_LEN_r33: { CHECK_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef callable; _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; @@ -13360,6 +13422,9 @@ PyInterpreterState *interp = tstate->interp; if (callable_o != interp->callable_cache.len) { UOP_STAT_INC(uopcode, miss); + _tos_cache2 = _stack_item_2; + _tos_cache1 = _stack_item_1; + _tos_cache0 = callable; SET_CURRENT_CACHED_VALUES(3); JUMP_TO_JUMP_TARGET(); } @@ -13367,13 +13432,13 @@ _tos_cache1 = _stack_item_1; _tos_cache0 = callable; SET_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _CALL_LEN_r33: { CHECK_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef arg; _PyStackRef callable; _PyStackRef res; @@ -13413,13 +13478,13 @@ SET_CURRENT_CACHED_VALUES(3); stack_pointer += -3; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_CALLABLE_ISINSTANCE_r03: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef callable; callable = stack_pointer[-4]; PyObject *callable_o = PyStackRef_AsPyObjectBorrow(callable); @@ -13435,13 +13500,13 @@ SET_CURRENT_CACHED_VALUES(3); stack_pointer += -3; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_CALLABLE_ISINSTANCE_r13: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef callable; _PyStackRef _stack_item_0 = _tos_cache0; callable = stack_pointer[-3]; @@ -13449,6 +13514,7 @@ PyInterpreterState *interp = tstate->interp; if (callable_o != interp->callable_cache.isinstance) { UOP_STAT_INC(uopcode, miss); + _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(1); JUMP_TO_JUMP_TARGET(); } @@ -13458,13 +13524,13 @@ SET_CURRENT_CACHED_VALUES(3); stack_pointer += -2; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_CALLABLE_ISINSTANCE_r23: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef callable; _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; @@ -13473,6 +13539,8 @@ PyInterpreterState *interp = tstate->interp; if (callable_o != interp->callable_cache.isinstance) { UOP_STAT_INC(uopcode, miss); + _tos_cache1 = _stack_item_1; + _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(2); JUMP_TO_JUMP_TARGET(); } @@ -13482,13 +13550,13 @@ SET_CURRENT_CACHED_VALUES(3); stack_pointer += -1; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_CALLABLE_ISINSTANCE_r33: { CHECK_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef callable; _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; @@ -13498,6 +13566,9 @@ PyInterpreterState *interp = tstate->interp; if (callable_o != interp->callable_cache.isinstance) { UOP_STAT_INC(uopcode, miss); + _tos_cache2 = _stack_item_2; + _tos_cache1 = _stack_item_1; + _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(3); JUMP_TO_JUMP_TARGET(); } @@ -13505,13 +13576,13 @@ _tos_cache1 = _stack_item_1; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _CALL_ISINSTANCE_r31: { CHECK_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef cls; _PyStackRef instance; _PyStackRef null; @@ -13561,13 +13632,13 @@ _tos_cache1 = PyStackRef_ZERO_BITS; _tos_cache2 = PyStackRef_ZERO_BITS; SET_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_CALLABLE_LIST_APPEND_r03: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef callable; callable = stack_pointer[-3]; PyObject *callable_o = PyStackRef_AsPyObjectBorrow(callable); @@ -13583,13 +13654,13 @@ SET_CURRENT_CACHED_VALUES(3); stack_pointer += -3; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_CALLABLE_LIST_APPEND_r13: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef callable; _PyStackRef _stack_item_0 = _tos_cache0; callable = stack_pointer[-2]; @@ -13597,6 +13668,7 @@ PyInterpreterState *interp = tstate->interp; if (callable_o != interp->callable_cache.list_append) { UOP_STAT_INC(uopcode, miss); + _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(1); JUMP_TO_JUMP_TARGET(); } @@ -13606,13 +13678,13 @@ SET_CURRENT_CACHED_VALUES(3); stack_pointer += -2; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_CALLABLE_LIST_APPEND_r23: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef callable; _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; @@ -13621,6 +13693,8 @@ PyInterpreterState *interp = tstate->interp; if (callable_o != interp->callable_cache.list_append) { UOP_STAT_INC(uopcode, miss); + _tos_cache1 = _stack_item_1; + _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(2); JUMP_TO_JUMP_TARGET(); } @@ -13630,13 +13704,13 @@ SET_CURRENT_CACHED_VALUES(3); stack_pointer += -1; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_CALLABLE_LIST_APPEND_r33: { CHECK_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef callable; _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; @@ -13646,6 +13720,9 @@ PyInterpreterState *interp = tstate->interp; if (callable_o != interp->callable_cache.list_append) { UOP_STAT_INC(uopcode, miss); + _tos_cache2 = _stack_item_2; + _tos_cache1 = _stack_item_1; + _tos_cache0 = callable; SET_CURRENT_CACHED_VALUES(3); JUMP_TO_JUMP_TARGET(); } @@ -13653,13 +13730,13 @@ _tos_cache1 = _stack_item_1; _tos_cache0 = callable; SET_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _CALL_LIST_APPEND_r02: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef arg; _PyStackRef self; _PyStackRef callable; @@ -13695,13 +13772,13 @@ SET_CURRENT_CACHED_VALUES(2); stack_pointer += -3; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _CALL_LIST_APPEND_r12: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef arg; _PyStackRef self; _PyStackRef callable; @@ -13716,6 +13793,7 @@ PyObject *self_o = PyStackRef_AsPyObjectBorrow(self); if (!LOCK_OBJECT(self_o)) { UOP_STAT_INC(uopcode, miss); + _tos_cache0 = arg; SET_CURRENT_CACHED_VALUES(1); JUMP_TO_JUMP_TARGET(); } @@ -13740,13 +13818,13 @@ SET_CURRENT_CACHED_VALUES(2); stack_pointer += -2; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _CALL_LIST_APPEND_r22: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef arg; _PyStackRef self; _PyStackRef callable; @@ -13762,6 +13840,8 @@ PyObject *self_o = PyStackRef_AsPyObjectBorrow(self); if (!LOCK_OBJECT(self_o)) { UOP_STAT_INC(uopcode, miss); + _tos_cache1 = arg; + _tos_cache0 = self; SET_CURRENT_CACHED_VALUES(2); JUMP_TO_JUMP_TARGET(); } @@ -13787,13 +13867,13 @@ SET_CURRENT_CACHED_VALUES(2); stack_pointer += -1; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _CALL_LIST_APPEND_r32: { CHECK_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef arg; _PyStackRef self; _PyStackRef callable; @@ -13810,6 +13890,9 @@ PyObject *self_o = PyStackRef_AsPyObjectBorrow(self); if (!LOCK_OBJECT(self_o)) { UOP_STAT_INC(uopcode, miss); + _tos_cache2 = arg; + _tos_cache1 = self; + _tos_cache0 = callable; SET_CURRENT_CACHED_VALUES(3); JUMP_TO_JUMP_TARGET(); } @@ -13834,13 +13917,13 @@ _tos_cache1 = s; _tos_cache0 = c; SET_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _CALL_METHOD_DESCRIPTOR_O_r01: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef *args; _PyStackRef self_or_null; _PyStackRef callable; @@ -13922,13 +14005,13 @@ _tos_cache1 = PyStackRef_ZERO_BITS; _tos_cache2 = PyStackRef_ZERO_BITS; SET_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS_r01: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef *args; _PyStackRef self_or_null; _PyStackRef callable; @@ -13992,13 +14075,13 @@ SET_CURRENT_CACHED_VALUES(1); stack_pointer += -2 - oparg; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _CALL_METHOD_DESCRIPTOR_NOARGS_r01: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef *args; _PyStackRef self_or_null; _PyStackRef callable; @@ -14067,13 +14150,13 @@ _tos_cache1 = PyStackRef_ZERO_BITS; _tos_cache2 = PyStackRef_ZERO_BITS; SET_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _CALL_METHOD_DESCRIPTOR_FAST_r01: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef *args; _PyStackRef self_or_null; _PyStackRef callable; @@ -14136,7 +14219,7 @@ SET_CURRENT_CACHED_VALUES(1); stack_pointer += -2 - oparg; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } @@ -14144,7 +14227,7 @@ case _MAYBE_EXPAND_METHOD_KW_r11: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef self_or_null; _PyStackRef callable; _PyStackRef _stack_item_0 = _tos_cache0; @@ -14174,7 +14257,7 @@ SET_CURRENT_CACHED_VALUES(1); stack_pointer[-2 - oparg] = callable; stack_pointer[-1 - oparg] = self_or_null; - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } @@ -14182,7 +14265,7 @@ case _PY_FRAME_KW_r11: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef kwnames; _PyStackRef *args; _PyStackRef self_or_null; @@ -14231,13 +14314,13 @@ _tos_cache1 = PyStackRef_ZERO_BITS; _tos_cache2 = PyStackRef_ZERO_BITS; SET_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _CHECK_FUNCTION_VERSION_KW_r11: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef callable; _PyStackRef _stack_item_0 = _tos_cache0; oparg = CURRENT_OPARG(); @@ -14246,24 +14329,26 @@ PyObject *callable_o = PyStackRef_AsPyObjectBorrow(callable); if (!PyFunction_Check(callable_o)) { UOP_STAT_INC(uopcode, miss); + _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(1); JUMP_TO_JUMP_TARGET(); } PyFunctionObject *func = (PyFunctionObject *)callable_o; if (func->func_version != func_version) { UOP_STAT_INC(uopcode, miss); + _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(1); JUMP_TO_JUMP_TARGET(); } _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _CHECK_METHOD_VERSION_KW_r11: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef null; _PyStackRef callable; _PyStackRef _stack_item_0 = _tos_cache0; @@ -14274,34 +14359,38 @@ PyObject *callable_o = PyStackRef_AsPyObjectBorrow(callable); if (Py_TYPE(callable_o) != &PyMethod_Type) { UOP_STAT_INC(uopcode, miss); + _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(1); JUMP_TO_JUMP_TARGET(); } PyObject *func = ((PyMethodObject *)callable_o)->im_func; if (!PyFunction_Check(func)) { UOP_STAT_INC(uopcode, miss); + _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(1); JUMP_TO_JUMP_TARGET(); } if (((PyFunctionObject *)func)->func_version != func_version) { UOP_STAT_INC(uopcode, miss); + _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(1); JUMP_TO_JUMP_TARGET(); } if (!PyStackRef_IsNull(null)) { UOP_STAT_INC(uopcode, miss); + _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(1); JUMP_TO_JUMP_TARGET(); } _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _EXPAND_METHOD_KW_r11: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef self_or_null; _PyStackRef callable; _PyStackRef _stack_item_0 = _tos_cache0; @@ -14329,13 +14418,13 @@ SET_CURRENT_CACHED_VALUES(1); stack_pointer += -1; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _CHECK_IS_NOT_PY_CALLABLE_KW_r11: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef callable; _PyStackRef _stack_item_0 = _tos_cache0; oparg = CURRENT_OPARG(); @@ -14343,23 +14432,25 @@ PyObject *callable_o = PyStackRef_AsPyObjectBorrow(callable); if (PyFunction_Check(callable_o)) { UOP_STAT_INC(uopcode, miss); + _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(1); JUMP_TO_JUMP_TARGET(); } if (Py_TYPE(callable_o) == &PyMethod_Type) { UOP_STAT_INC(uopcode, miss); + _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(1); JUMP_TO_JUMP_TARGET(); } _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _CALL_KW_NON_PY_r11: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef kwnames; _PyStackRef *args; _PyStackRef self_or_null; @@ -14403,13 +14494,13 @@ SET_CURRENT_CACHED_VALUES(1); stack_pointer += -3 - oparg; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _MAKE_CALLARGS_A_TUPLE_r33: { CHECK_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef callargs; _PyStackRef func; _PyStackRef _stack_item_0 = _tos_cache0; @@ -14450,7 +14541,7 @@ _tos_cache1 = callargs; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } @@ -14458,7 +14549,7 @@ case _MAKE_FUNCTION_r11: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef codeobj_st; _PyStackRef func; _PyStackRef _stack_item_0 = _tos_cache0; @@ -14487,13 +14578,13 @@ _tos_cache1 = PyStackRef_ZERO_BITS; _tos_cache2 = PyStackRef_ZERO_BITS; SET_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _SET_FUNCTION_ATTRIBUTE_r01: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef func_in; _PyStackRef attr_st; _PyStackRef func_out; @@ -14513,13 +14604,13 @@ SET_CURRENT_CACHED_VALUES(1); stack_pointer += -2; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _SET_FUNCTION_ATTRIBUTE_r11: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef func_in; _PyStackRef attr_st; _PyStackRef func_out; @@ -14540,13 +14631,13 @@ SET_CURRENT_CACHED_VALUES(1); stack_pointer += -1; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _SET_FUNCTION_ATTRIBUTE_r21: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef func_in; _PyStackRef attr_st; _PyStackRef func_out; @@ -14566,13 +14657,13 @@ *ptr = attr; _tos_cache0 = func_out; SET_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _SET_FUNCTION_ATTRIBUTE_r32: { CHECK_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef func_in; _PyStackRef attr_st; _PyStackRef func_out; @@ -14594,13 +14685,13 @@ _tos_cache1 = func_out; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _RETURN_GENERATOR_r01: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef res; assert(PyStackRef_FunctionCheck(frame->f_funcobj)); PyFunctionObject *func = (PyFunctionObject *)PyStackRef_AsPyObjectBorrow(frame->f_funcobj); @@ -14631,13 +14722,13 @@ _tos_cache1 = PyStackRef_ZERO_BITS; _tos_cache2 = PyStackRef_ZERO_BITS; SET_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _BUILD_SLICE_r01: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef *args; _PyStackRef slice; oparg = CURRENT_OPARG(); @@ -14665,13 +14756,13 @@ _tos_cache1 = PyStackRef_ZERO_BITS; _tos_cache2 = PyStackRef_ZERO_BITS; SET_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _CONVERT_VALUE_r11: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef value; _PyStackRef result; _PyStackRef _stack_item_0 = _tos_cache0; @@ -14700,13 +14791,13 @@ _tos_cache1 = PyStackRef_ZERO_BITS; _tos_cache2 = PyStackRef_ZERO_BITS; SET_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _FORMAT_SIMPLE_r11: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef value; _PyStackRef res; _PyStackRef _stack_item_0 = _tos_cache0; @@ -14737,13 +14828,13 @@ _tos_cache1 = PyStackRef_ZERO_BITS; _tos_cache2 = PyStackRef_ZERO_BITS; SET_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _FORMAT_WITH_SPEC_r21: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef fmt_spec; _PyStackRef value; _PyStackRef res; @@ -14777,13 +14868,13 @@ _tos_cache1 = PyStackRef_ZERO_BITS; _tos_cache2 = PyStackRef_ZERO_BITS; SET_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _COPY_1_r02: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef bottom; _PyStackRef top; bottom = stack_pointer[-1]; @@ -14793,13 +14884,13 @@ SET_CURRENT_CACHED_VALUES(2); stack_pointer += -1; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _COPY_1_r12: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef bottom; _PyStackRef top; _PyStackRef _stack_item_0 = _tos_cache0; @@ -14808,13 +14899,13 @@ _tos_cache1 = top; _tos_cache0 = bottom; SET_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _COPY_1_r23: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef bottom; _PyStackRef top; _PyStackRef _stack_item_0 = _tos_cache0; @@ -14825,13 +14916,13 @@ _tos_cache1 = bottom; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _COPY_2_r03: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef bottom; _PyStackRef top; bottom = stack_pointer[-2]; @@ -14842,13 +14933,13 @@ SET_CURRENT_CACHED_VALUES(3); stack_pointer += -2; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _COPY_2_r13: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef bottom; _PyStackRef top; _PyStackRef _stack_item_0 = _tos_cache0; @@ -14860,13 +14951,13 @@ SET_CURRENT_CACHED_VALUES(3); stack_pointer += -1; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _COPY_2_r23: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef bottom; _PyStackRef top; _PyStackRef _stack_item_0 = _tos_cache0; @@ -14877,13 +14968,13 @@ _tos_cache1 = _stack_item_1; _tos_cache0 = bottom; SET_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _COPY_3_r03: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef bottom; _PyStackRef top; bottom = stack_pointer[-3]; @@ -14894,13 +14985,13 @@ SET_CURRENT_CACHED_VALUES(3); stack_pointer += -2; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _COPY_3_r13: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef bottom; _PyStackRef top; _PyStackRef _stack_item_0 = _tos_cache0; @@ -14912,13 +15003,13 @@ SET_CURRENT_CACHED_VALUES(3); stack_pointer += -1; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _COPY_3_r23: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef bottom; _PyStackRef top; _PyStackRef _stack_item_0 = _tos_cache0; @@ -14929,13 +15020,13 @@ _tos_cache1 = _stack_item_1; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _COPY_3_r33: { CHECK_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef bottom; _PyStackRef top; _PyStackRef _stack_item_0 = _tos_cache0; @@ -14950,13 +15041,13 @@ stack_pointer[0] = bottom; stack_pointer += 1; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _COPY_r01: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef bottom; _PyStackRef top; oparg = CURRENT_OPARG(); @@ -14964,13 +15055,13 @@ top = PyStackRef_DUP(bottom); _tos_cache0 = top; SET_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _BINARY_OP_r21: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef rhs; _PyStackRef lhs; _PyStackRef res; @@ -15012,13 +15103,13 @@ SET_CURRENT_CACHED_VALUES(1); stack_pointer += -1; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _SWAP_2_r02: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef top; _PyStackRef bottom; top = stack_pointer[-1]; @@ -15031,13 +15122,13 @@ SET_CURRENT_CACHED_VALUES(2); stack_pointer += -2; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _SWAP_2_r12: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef top; _PyStackRef bottom; _PyStackRef _stack_item_0 = _tos_cache0; @@ -15051,13 +15142,13 @@ SET_CURRENT_CACHED_VALUES(2); stack_pointer += -1; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _SWAP_2_r22: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef top; _PyStackRef bottom; _PyStackRef _stack_item_0 = _tos_cache0; @@ -15070,13 +15161,13 @@ _tos_cache1 = top; _tos_cache0 = bottom; SET_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _SWAP_2_r33: { CHECK_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef top; _PyStackRef bottom; _PyStackRef _stack_item_0 = _tos_cache0; @@ -15091,13 +15182,13 @@ _tos_cache1 = bottom; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _SWAP_3_r03: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef top; _PyStackRef bottom; top = stack_pointer[-1]; @@ -15111,13 +15202,13 @@ SET_CURRENT_CACHED_VALUES(3); stack_pointer += -3; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _SWAP_3_r13: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef top; _PyStackRef bottom; _PyStackRef _stack_item_0 = _tos_cache0; @@ -15132,13 +15223,13 @@ SET_CURRENT_CACHED_VALUES(3); stack_pointer += -2; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _SWAP_3_r23: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef top; _PyStackRef bottom; _PyStackRef _stack_item_0 = _tos_cache0; @@ -15154,13 +15245,13 @@ SET_CURRENT_CACHED_VALUES(3); stack_pointer += -1; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _SWAP_3_r33: { CHECK_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef top; _PyStackRef bottom; _PyStackRef _stack_item_0 = _tos_cache0; @@ -15175,13 +15266,13 @@ _tos_cache1 = _stack_item_1; _tos_cache0 = bottom; SET_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _SWAP_r11: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef top; _PyStackRef bottom; _PyStackRef _stack_item_0 = _tos_cache0; @@ -15194,7 +15285,7 @@ _tos_cache0 = top; SET_CURRENT_CACHED_VALUES(1); stack_pointer[-1 - (oparg-2)] = bottom; - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } @@ -15218,7 +15309,7 @@ case _GUARD_IS_TRUE_POP_r00: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef flag; flag = stack_pointer[-1]; int is_true = PyStackRef_IsTrue(flag); @@ -15232,13 +15323,13 @@ SET_CURRENT_CACHED_VALUES(0); stack_pointer += -1; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_IS_TRUE_POP_r10: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef flag; _PyStackRef _stack_item_0 = _tos_cache0; flag = _stack_item_0; @@ -15249,13 +15340,13 @@ JUMP_TO_JUMP_TARGET(); } SET_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_IS_TRUE_POP_r21: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef flag; _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; @@ -15269,13 +15360,13 @@ } _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_IS_TRUE_POP_r32: { CHECK_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef flag; _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; @@ -15292,13 +15383,13 @@ _tos_cache1 = _stack_item_1; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_IS_FALSE_POP_r00: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef flag; flag = stack_pointer[-1]; int is_false = PyStackRef_IsFalse(flag); @@ -15312,13 +15403,13 @@ SET_CURRENT_CACHED_VALUES(0); stack_pointer += -1; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_IS_FALSE_POP_r10: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef flag; _PyStackRef _stack_item_0 = _tos_cache0; flag = _stack_item_0; @@ -15329,13 +15420,13 @@ JUMP_TO_JUMP_TARGET(); } SET_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_IS_FALSE_POP_r21: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef flag; _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; @@ -15349,13 +15440,13 @@ } _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_IS_FALSE_POP_r32: { CHECK_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef flag; _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; @@ -15372,13 +15463,13 @@ _tos_cache1 = _stack_item_1; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_IS_NONE_POP_r00: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef val; val = stack_pointer[-1]; int is_none = PyStackRef_IsNone(val); @@ -15397,13 +15488,13 @@ SET_CURRENT_CACHED_VALUES(0); stack_pointer += -1; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_IS_NONE_POP_r10: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef val; _PyStackRef _stack_item_0 = _tos_cache0; val = _stack_item_0; @@ -15419,13 +15510,13 @@ } } SET_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_IS_NONE_POP_r21: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef val; _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; @@ -15449,13 +15540,13 @@ } _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_IS_NONE_POP_r32: { CHECK_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef val; _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; @@ -15483,13 +15574,13 @@ _tos_cache1 = _stack_item_1; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_IS_NOT_NONE_POP_r10: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef val; _PyStackRef _stack_item_0 = _tos_cache0; val = _stack_item_0; @@ -15506,44 +15597,44 @@ _tos_cache1 = PyStackRef_ZERO_BITS; _tos_cache2 = PyStackRef_ZERO_BITS; SET_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _JUMP_TO_TOP_r00: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); JUMP_TO_JUMP_TARGET(); SET_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _SET_IP_r00: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); PyObject *instr_ptr = (PyObject *)CURRENT_OPERAND0_64(); frame->instr_ptr = (_Py_CODEUNIT *)instr_ptr; SET_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _SET_IP_r11: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef _stack_item_0 = _tos_cache0; PyObject *instr_ptr = (PyObject *)CURRENT_OPERAND0_64(); frame->instr_ptr = (_Py_CODEUNIT *)instr_ptr; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _SET_IP_r22: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; PyObject *instr_ptr = (PyObject *)CURRENT_OPERAND0_64(); @@ -15551,13 +15642,13 @@ _tos_cache1 = _stack_item_1; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _SET_IP_r33: { CHECK_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; _PyStackRef _stack_item_2 = _tos_cache2; @@ -15567,13 +15658,13 @@ _tos_cache1 = _stack_item_1; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _CHECK_STACK_SPACE_OPERAND_r00: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); uint32_t framesize = (uint32_t)CURRENT_OPERAND0_32(); assert(framesize <= INT_MAX); if (!_PyThreadState_HasStackSpace(tstate, framesize)) { @@ -15587,59 +15678,65 @@ JUMP_TO_JUMP_TARGET(); } SET_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _CHECK_STACK_SPACE_OPERAND_r11: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef _stack_item_0 = _tos_cache0; uint32_t framesize = (uint32_t)CURRENT_OPERAND0_32(); assert(framesize <= INT_MAX); if (!_PyThreadState_HasStackSpace(tstate, framesize)) { UOP_STAT_INC(uopcode, miss); + _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(1); JUMP_TO_JUMP_TARGET(); } if (tstate->py_recursion_remaining <= 1) { UOP_STAT_INC(uopcode, miss); + _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(1); JUMP_TO_JUMP_TARGET(); } _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _CHECK_STACK_SPACE_OPERAND_r22: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; uint32_t framesize = (uint32_t)CURRENT_OPERAND0_32(); assert(framesize <= INT_MAX); if (!_PyThreadState_HasStackSpace(tstate, framesize)) { UOP_STAT_INC(uopcode, miss); + _tos_cache1 = _stack_item_1; + _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(2); JUMP_TO_JUMP_TARGET(); } if (tstate->py_recursion_remaining <= 1) { UOP_STAT_INC(uopcode, miss); + _tos_cache1 = _stack_item_1; + _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(2); JUMP_TO_JUMP_TARGET(); } _tos_cache1 = _stack_item_1; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _CHECK_STACK_SPACE_OPERAND_r33: { CHECK_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; _PyStackRef _stack_item_2 = _tos_cache2; @@ -15647,11 +15744,17 @@ assert(framesize <= INT_MAX); if (!_PyThreadState_HasStackSpace(tstate, framesize)) { UOP_STAT_INC(uopcode, miss); + _tos_cache2 = _stack_item_2; + _tos_cache1 = _stack_item_1; + _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(3); JUMP_TO_JUMP_TARGET(); } if (tstate->py_recursion_remaining <= 1) { UOP_STAT_INC(uopcode, miss); + _tos_cache2 = _stack_item_2; + _tos_cache1 = _stack_item_1; + _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(3); JUMP_TO_JUMP_TARGET(); } @@ -15659,13 +15762,13 @@ _tos_cache1 = _stack_item_1; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _SAVE_RETURN_OFFSET_r00: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); oparg = CURRENT_OPARG(); #if TIER_ONE frame->return_offset = (uint16_t)(next_instr - this_instr); @@ -15674,13 +15777,13 @@ frame->return_offset = oparg; #endif SET_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _SAVE_RETURN_OFFSET_r11: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef _stack_item_0 = _tos_cache0; oparg = CURRENT_OPARG(); #if TIER_ONE @@ -15691,13 +15794,13 @@ #endif _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _SAVE_RETURN_OFFSET_r22: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; oparg = CURRENT_OPARG(); @@ -15710,13 +15813,13 @@ _tos_cache1 = _stack_item_1; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _SAVE_RETURN_OFFSET_r33: { CHECK_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; _PyStackRef _stack_item_2 = _tos_cache2; @@ -15731,13 +15834,13 @@ _tos_cache1 = _stack_item_1; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _EXIT_TRACE_r00: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); PyObject *exit_p = (PyObject *)CURRENT_OPERAND0_64(); _PyExitData *exit = (_PyExitData *)exit_p; #if defined(Py_DEBUG) && !defined(_Py_JIT) @@ -15763,7 +15866,7 @@ case _EXIT_TRACE_r10: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef _stack_item_0 = _tos_cache0; PyObject *exit_p = (PyObject *)CURRENT_OPERAND0_64(); _PyExitData *exit = (_PyExitData *)exit_p; @@ -15797,7 +15900,7 @@ case _EXIT_TRACE_r20: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; PyObject *exit_p = (PyObject *)CURRENT_OPERAND0_64(); @@ -15834,7 +15937,7 @@ case _EXIT_TRACE_r30: { CHECK_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; _PyStackRef _stack_item_2 = _tos_cache2; @@ -15874,7 +15977,7 @@ case _DYNAMIC_EXIT_r00: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); PyObject *exit_p = (PyObject *)CURRENT_OPERAND0_64(); #if defined(Py_DEBUG) && !defined(_Py_JIT) _PyExitData *exit = (_PyExitData *)exit_p; @@ -15897,7 +16000,7 @@ case _DYNAMIC_EXIT_r10: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef _stack_item_0 = _tos_cache0; PyObject *exit_p = (PyObject *)CURRENT_OPERAND0_64(); #if defined(Py_DEBUG) && !defined(_Py_JIT) @@ -15928,7 +16031,7 @@ case _DYNAMIC_EXIT_r20: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; PyObject *exit_p = (PyObject *)CURRENT_OPERAND0_64(); @@ -15962,7 +16065,7 @@ case _DYNAMIC_EXIT_r30: { CHECK_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; _PyStackRef _stack_item_2 = _tos_cache2; @@ -15999,57 +16102,63 @@ case _CHECK_VALIDITY_r00: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); if (!current_executor->vm_data.valid) { UOP_STAT_INC(uopcode, miss); SET_CURRENT_CACHED_VALUES(0); JUMP_TO_JUMP_TARGET(); } SET_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _CHECK_VALIDITY_r11: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef _stack_item_0 = _tos_cache0; if (!current_executor->vm_data.valid) { UOP_STAT_INC(uopcode, miss); + _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(1); JUMP_TO_JUMP_TARGET(); } _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _CHECK_VALIDITY_r22: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; if (!current_executor->vm_data.valid) { UOP_STAT_INC(uopcode, miss); + _tos_cache1 = _stack_item_1; + _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(2); JUMP_TO_JUMP_TARGET(); } _tos_cache1 = _stack_item_1; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _CHECK_VALIDITY_r33: { CHECK_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; _PyStackRef _stack_item_2 = _tos_cache2; if (!current_executor->vm_data.valid) { UOP_STAT_INC(uopcode, miss); + _tos_cache2 = _stack_item_2; + _tos_cache1 = _stack_item_1; + _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(3); JUMP_TO_JUMP_TARGET(); } @@ -16057,25 +16166,25 @@ _tos_cache1 = _stack_item_1; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _LOAD_CONST_INLINE_r01: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef value; PyObject *ptr = (PyObject *)CURRENT_OPERAND0_64(); value = PyStackRef_FromPyObjectNew(ptr); _tos_cache0 = value; SET_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _LOAD_CONST_INLINE_r12: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef value; _PyStackRef _stack_item_0 = _tos_cache0; PyObject *ptr = (PyObject *)CURRENT_OPERAND0_64(); @@ -16083,13 +16192,13 @@ _tos_cache1 = value; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _LOAD_CONST_INLINE_r23: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef value; _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; @@ -16099,13 +16208,13 @@ _tos_cache1 = _stack_item_1; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _POP_TOP_LOAD_CONST_INLINE_r11: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef pop; _PyStackRef value; _PyStackRef _stack_item_0 = _tos_cache0; @@ -16119,25 +16228,25 @@ _tos_cache1 = PyStackRef_ZERO_BITS; _tos_cache2 = PyStackRef_ZERO_BITS; SET_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _LOAD_CONST_INLINE_BORROW_r01: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef value; PyObject *ptr = (PyObject *)CURRENT_OPERAND0_64(); value = PyStackRef_FromPyObjectBorrow(ptr); _tos_cache0 = value; SET_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _LOAD_CONST_INLINE_BORROW_r12: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef value; _PyStackRef _stack_item_0 = _tos_cache0; PyObject *ptr = (PyObject *)CURRENT_OPERAND0_64(); @@ -16145,13 +16254,13 @@ _tos_cache1 = value; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _LOAD_CONST_INLINE_BORROW_r23: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef value; _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; @@ -16161,13 +16270,13 @@ _tos_cache1 = _stack_item_1; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _POP_CALL_r20: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef null; _PyStackRef callable; _PyStackRef _stack_item_0 = _tos_cache0; @@ -16182,13 +16291,13 @@ _tos_cache1 = PyStackRef_ZERO_BITS; _tos_cache2 = PyStackRef_ZERO_BITS; SET_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _POP_CALL_ONE_r30: { CHECK_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef pop; _PyStackRef null; _PyStackRef callable; @@ -16215,13 +16324,13 @@ _tos_cache1 = PyStackRef_ZERO_BITS; _tos_cache2 = PyStackRef_ZERO_BITS; SET_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _POP_CALL_TWO_r30: { CHECK_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef pop2; _PyStackRef pop1; _PyStackRef null; @@ -16255,13 +16364,13 @@ _tos_cache1 = PyStackRef_ZERO_BITS; _tos_cache2 = PyStackRef_ZERO_BITS; SET_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _POP_TOP_LOAD_CONST_INLINE_BORROW_r11: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef pop; _PyStackRef value; _PyStackRef _stack_item_0 = _tos_cache0; @@ -16275,13 +16384,13 @@ _tos_cache1 = PyStackRef_ZERO_BITS; _tos_cache2 = PyStackRef_ZERO_BITS; SET_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _POP_TWO_LOAD_CONST_INLINE_BORROW_r21: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef pop2; _PyStackRef pop1; _PyStackRef value; @@ -16306,13 +16415,13 @@ _tos_cache1 = PyStackRef_ZERO_BITS; _tos_cache2 = PyStackRef_ZERO_BITS; SET_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _POP_CALL_LOAD_CONST_INLINE_BORROW_r21: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef null; _PyStackRef callable; _PyStackRef value; @@ -16330,13 +16439,13 @@ _tos_cache1 = PyStackRef_ZERO_BITS; _tos_cache2 = PyStackRef_ZERO_BITS; SET_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _POP_CALL_ONE_LOAD_CONST_INLINE_BORROW_r31: { CHECK_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef pop; _PyStackRef null; _PyStackRef callable; @@ -16366,13 +16475,13 @@ _tos_cache1 = PyStackRef_ZERO_BITS; _tos_cache2 = PyStackRef_ZERO_BITS; SET_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _POP_CALL_TWO_LOAD_CONST_INLINE_BORROW_r31: { CHECK_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef pop2; _PyStackRef pop1; _PyStackRef null; @@ -16409,13 +16518,13 @@ _tos_cache1 = PyStackRef_ZERO_BITS; _tos_cache2 = PyStackRef_ZERO_BITS; SET_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _LOAD_CONST_UNDER_INLINE_r02: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef old; _PyStackRef value; _PyStackRef new; @@ -16428,13 +16537,13 @@ SET_CURRENT_CACHED_VALUES(2); stack_pointer += -1; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _LOAD_CONST_UNDER_INLINE_r12: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef old; _PyStackRef value; _PyStackRef new; @@ -16446,13 +16555,13 @@ _tos_cache1 = new; _tos_cache0 = value; SET_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _LOAD_CONST_UNDER_INLINE_r23: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef old; _PyStackRef value; _PyStackRef new; @@ -16466,13 +16575,13 @@ _tos_cache1 = value; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _LOAD_CONST_UNDER_INLINE_BORROW_r02: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef old; _PyStackRef value; _PyStackRef new; @@ -16485,13 +16594,13 @@ SET_CURRENT_CACHED_VALUES(2); stack_pointer += -1; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _LOAD_CONST_UNDER_INLINE_BORROW_r12: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef old; _PyStackRef value; _PyStackRef new; @@ -16503,13 +16612,13 @@ _tos_cache1 = new; _tos_cache0 = value; SET_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _LOAD_CONST_UNDER_INLINE_BORROW_r23: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef old; _PyStackRef value; _PyStackRef new; @@ -16523,13 +16632,13 @@ _tos_cache1 = value; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _START_EXECUTOR_r00: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); PyObject *executor = (PyObject *)CURRENT_OPERAND0_64(); #ifndef _Py_JIT assert(current_executor == (_PyExecutorObject*)executor); @@ -16549,46 +16658,46 @@ } } SET_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _MAKE_WARM_r00: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); current_executor->vm_data.warm = true; SET_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _MAKE_WARM_r11: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef _stack_item_0 = _tos_cache0; current_executor->vm_data.warm = true; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _MAKE_WARM_r22: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; current_executor->vm_data.warm = true; _tos_cache1 = _stack_item_1; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _MAKE_WARM_r33: { CHECK_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; _PyStackRef _stack_item_2 = _tos_cache2; @@ -16597,35 +16706,35 @@ _tos_cache1 = _stack_item_1; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _FATAL_ERROR_r00: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); assert(0); Py_FatalError("Fatal error uop executed."); SET_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _FATAL_ERROR_r11: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef _stack_item_0 = _tos_cache0; assert(0); Py_FatalError("Fatal error uop executed."); _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _FATAL_ERROR_r22: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; assert(0); @@ -16633,13 +16742,13 @@ _tos_cache1 = _stack_item_1; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _FATAL_ERROR_r33: { CHECK_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; _PyStackRef _stack_item_2 = _tos_cache2; @@ -16649,13 +16758,13 @@ _tos_cache1 = _stack_item_1; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _DEOPT_r00: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); SET_CURRENT_CACHED_VALUES(0); GOTO_TIER_ONE((frame->owner == FRAME_OWNED_BY_INTERPRETER) ? _Py_INTERPRETER_TRAMPOLINE_INSTRUCTIONS_PTR : _PyFrame_GetBytecode(frame) + CURRENT_TARGET()); @@ -16663,7 +16772,7 @@ case _DEOPT_r10: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef _stack_item_0 = _tos_cache0; stack_pointer[0] = _stack_item_0; stack_pointer += 1; @@ -16675,7 +16784,7 @@ case _DEOPT_r20: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; stack_pointer[0] = _stack_item_0; @@ -16689,7 +16798,7 @@ case _DEOPT_r30: { CHECK_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; _PyStackRef _stack_item_2 = _tos_cache2; @@ -16705,7 +16814,7 @@ case _HANDLE_PENDING_AND_DEOPT_r00: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyFrame_SetStackPointer(frame, stack_pointer); int err = _Py_HandlePending(tstate); stack_pointer = _PyFrame_GetStackPointer(frame); @@ -16715,7 +16824,7 @@ case _HANDLE_PENDING_AND_DEOPT_r10: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef _stack_item_0 = _tos_cache0; stack_pointer[0] = _stack_item_0; stack_pointer += 1; @@ -16729,7 +16838,7 @@ case _HANDLE_PENDING_AND_DEOPT_r20: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; stack_pointer[0] = _stack_item_0; @@ -16745,7 +16854,7 @@ case _HANDLE_PENDING_AND_DEOPT_r30: { CHECK_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; _PyStackRef _stack_item_2 = _tos_cache2; @@ -16763,7 +16872,7 @@ case _ERROR_POP_N_r00: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); oparg = CURRENT_OPARG(); uint32_t target = (uint32_t)CURRENT_OPERAND0_32(); assert(oparg == 0); @@ -16774,68 +16883,68 @@ case _SPILL_OR_RELOAD_r01: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _tos_cache0 = stack_pointer[-1]; SET_CURRENT_CACHED_VALUES(1); stack_pointer += -1; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _SPILL_OR_RELOAD_r02: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _tos_cache1 = stack_pointer[-1]; _tos_cache0 = stack_pointer[-2]; SET_CURRENT_CACHED_VALUES(2); stack_pointer += -2; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _SPILL_OR_RELOAD_r03: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _tos_cache2 = stack_pointer[-1]; _tos_cache1 = stack_pointer[-2]; _tos_cache0 = stack_pointer[-3]; SET_CURRENT_CACHED_VALUES(3); stack_pointer += -3; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _SPILL_OR_RELOAD_r10: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef _stack_item_0 = _tos_cache0; SET_CURRENT_CACHED_VALUES(0); stack_pointer[0] = _stack_item_0; stack_pointer += 1; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _SPILL_OR_RELOAD_r12: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef _stack_item_0 = _tos_cache0; _tos_cache1 = _stack_item_0; _tos_cache0 = stack_pointer[-1]; SET_CURRENT_CACHED_VALUES(2); stack_pointer += -1; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _SPILL_OR_RELOAD_r13: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef _stack_item_0 = _tos_cache0; _tos_cache2 = _stack_item_0; _tos_cache1 = stack_pointer[-1]; @@ -16843,13 +16952,13 @@ SET_CURRENT_CACHED_VALUES(3); stack_pointer += -2; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _SPILL_OR_RELOAD_r20: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; SET_CURRENT_CACHED_VALUES(0); @@ -16857,13 +16966,13 @@ stack_pointer[1] = _stack_item_1; stack_pointer += 2; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _SPILL_OR_RELOAD_r21: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; _tos_cache0 = _stack_item_1; @@ -16871,13 +16980,13 @@ stack_pointer[0] = _stack_item_0; stack_pointer += 1; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _SPILL_OR_RELOAD_r23: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; _tos_cache2 = _stack_item_1; @@ -16886,13 +16995,13 @@ SET_CURRENT_CACHED_VALUES(3); stack_pointer += -1; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _SPILL_OR_RELOAD_r30: { CHECK_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; _PyStackRef _stack_item_2 = _tos_cache2; @@ -16902,13 +17011,13 @@ stack_pointer[2] = _stack_item_2; stack_pointer += 3; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _SPILL_OR_RELOAD_r31: { CHECK_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; _PyStackRef _stack_item_2 = _tos_cache2; @@ -16918,13 +17027,13 @@ stack_pointer[1] = _stack_item_1; stack_pointer += 2; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _SPILL_OR_RELOAD_r32: { CHECK_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; _PyStackRef _stack_item_2 = _tos_cache2; @@ -16934,13 +17043,13 @@ stack_pointer[0] = _stack_item_0; stack_pointer += 1; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _TIER2_RESUME_CHECK_r00: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); #if defined(__EMSCRIPTEN__) if (_Py_emscripten_signal_clock == 0) { UOP_STAT_INC(uopcode, miss); @@ -16957,17 +17066,18 @@ } assert(tstate->tracing || eval_breaker == FT_ATOMIC_LOAD_UINTPTR_ACQUIRE(_PyFrame_GetCode(frame)->_co_instrumentation_version)); SET_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _TIER2_RESUME_CHECK_r11: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef _stack_item_0 = _tos_cache0; #if defined(__EMSCRIPTEN__) if (_Py_emscripten_signal_clock == 0) { UOP_STAT_INC(uopcode, miss); + _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(1); JUMP_TO_JUMP_TARGET(); } @@ -16976,24 +17086,27 @@ uintptr_t eval_breaker = _Py_atomic_load_uintptr_relaxed(&tstate->eval_breaker); if (eval_breaker & _PY_EVAL_EVENTS_MASK) { UOP_STAT_INC(uopcode, miss); + _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(1); JUMP_TO_JUMP_TARGET(); } assert(tstate->tracing || eval_breaker == FT_ATOMIC_LOAD_UINTPTR_ACQUIRE(_PyFrame_GetCode(frame)->_co_instrumentation_version)); _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _TIER2_RESUME_CHECK_r22: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; #if defined(__EMSCRIPTEN__) if (_Py_emscripten_signal_clock == 0) { UOP_STAT_INC(uopcode, miss); + _tos_cache1 = _stack_item_1; + _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(2); JUMP_TO_JUMP_TARGET(); } @@ -17002,6 +17115,8 @@ uintptr_t eval_breaker = _Py_atomic_load_uintptr_relaxed(&tstate->eval_breaker); if (eval_breaker & _PY_EVAL_EVENTS_MASK) { UOP_STAT_INC(uopcode, miss); + _tos_cache1 = _stack_item_1; + _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(2); JUMP_TO_JUMP_TARGET(); } @@ -17009,19 +17124,22 @@ _tos_cache1 = _stack_item_1; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _TIER2_RESUME_CHECK_r33: { CHECK_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; _PyStackRef _stack_item_2 = _tos_cache2; #if defined(__EMSCRIPTEN__) if (_Py_emscripten_signal_clock == 0) { UOP_STAT_INC(uopcode, miss); + _tos_cache2 = _stack_item_2; + _tos_cache1 = _stack_item_1; + _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(3); JUMP_TO_JUMP_TARGET(); } @@ -17030,6 +17148,9 @@ uintptr_t eval_breaker = _Py_atomic_load_uintptr_relaxed(&tstate->eval_breaker); if (eval_breaker & _PY_EVAL_EVENTS_MASK) { UOP_STAT_INC(uopcode, miss); + _tos_cache2 = _stack_item_2; + _tos_cache1 = _stack_item_1; + _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(3); JUMP_TO_JUMP_TARGET(); } @@ -17038,13 +17159,13 @@ _tos_cache1 = _stack_item_1; _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _COLD_EXIT_r00: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyExitData *exit = tstate->jit_exit; assert(exit != NULL); assert(frame->owner < FRAME_OWNED_BY_INTERPRETER); @@ -17081,7 +17202,7 @@ case _COLD_DYNAMIC_EXIT_r00: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _Py_CODEUNIT *target = frame->instr_ptr; SET_CURRENT_CACHED_VALUES(0); GOTO_TIER_ONE(target); @@ -17089,7 +17210,7 @@ case _GUARD_IP__PUSH_FRAME_r00: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); #define OFFSET_OF__PUSH_FRAME ((0)) PyObject *ip = (PyObject *)CURRENT_OPERAND0_64(); _Py_CODEUNIT *target = frame->instr_ptr + OFFSET_OF__PUSH_FRAME; @@ -17103,13 +17224,13 @@ } SET_CURRENT_CACHED_VALUES(0); #undef OFFSET_OF__PUSH_FRAME - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_IP__PUSH_FRAME_r11: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef _stack_item_0 = _tos_cache0; #define OFFSET_OF__PUSH_FRAME ((0)) PyObject *ip = (PyObject *)CURRENT_OPERAND0_64(); @@ -17118,6 +17239,7 @@ frame->instr_ptr += OFFSET_OF__PUSH_FRAME; if (true) { UOP_STAT_INC(uopcode, miss); + _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(1); JUMP_TO_JUMP_TARGET(); } @@ -17125,13 +17247,13 @@ _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(1); #undef OFFSET_OF__PUSH_FRAME - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_IP__PUSH_FRAME_r22: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; #define OFFSET_OF__PUSH_FRAME ((0)) @@ -17141,6 +17263,8 @@ frame->instr_ptr += OFFSET_OF__PUSH_FRAME; if (true) { UOP_STAT_INC(uopcode, miss); + _tos_cache1 = _stack_item_1; + _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(2); JUMP_TO_JUMP_TARGET(); } @@ -17149,13 +17273,13 @@ _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(2); #undef OFFSET_OF__PUSH_FRAME - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_IP__PUSH_FRAME_r33: { CHECK_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; _PyStackRef _stack_item_2 = _tos_cache2; @@ -17166,6 +17290,9 @@ frame->instr_ptr += OFFSET_OF__PUSH_FRAME; if (true) { UOP_STAT_INC(uopcode, miss); + _tos_cache2 = _stack_item_2; + _tos_cache1 = _stack_item_1; + _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(3); JUMP_TO_JUMP_TARGET(); } @@ -17175,13 +17302,13 @@ _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(3); #undef OFFSET_OF__PUSH_FRAME - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_IP_YIELD_VALUE_r00: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); #define OFFSET_OF_YIELD_VALUE ((1+INLINE_CACHE_ENTRIES_SEND)) PyObject *ip = (PyObject *)CURRENT_OPERAND0_64(); _Py_CODEUNIT *target = frame->instr_ptr + OFFSET_OF_YIELD_VALUE; @@ -17195,13 +17322,13 @@ } SET_CURRENT_CACHED_VALUES(0); #undef OFFSET_OF_YIELD_VALUE - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_IP_YIELD_VALUE_r11: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef _stack_item_0 = _tos_cache0; #define OFFSET_OF_YIELD_VALUE ((1+INLINE_CACHE_ENTRIES_SEND)) PyObject *ip = (PyObject *)CURRENT_OPERAND0_64(); @@ -17210,6 +17337,7 @@ frame->instr_ptr += OFFSET_OF_YIELD_VALUE; if (true) { UOP_STAT_INC(uopcode, miss); + _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(1); JUMP_TO_JUMP_TARGET(); } @@ -17217,13 +17345,13 @@ _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(1); #undef OFFSET_OF_YIELD_VALUE - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_IP_YIELD_VALUE_r22: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; #define OFFSET_OF_YIELD_VALUE ((1+INLINE_CACHE_ENTRIES_SEND)) @@ -17233,6 +17361,8 @@ frame->instr_ptr += OFFSET_OF_YIELD_VALUE; if (true) { UOP_STAT_INC(uopcode, miss); + _tos_cache1 = _stack_item_1; + _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(2); JUMP_TO_JUMP_TARGET(); } @@ -17241,13 +17371,13 @@ _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(2); #undef OFFSET_OF_YIELD_VALUE - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_IP_YIELD_VALUE_r33: { CHECK_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; _PyStackRef _stack_item_2 = _tos_cache2; @@ -17258,6 +17388,9 @@ frame->instr_ptr += OFFSET_OF_YIELD_VALUE; if (true) { UOP_STAT_INC(uopcode, miss); + _tos_cache2 = _stack_item_2; + _tos_cache1 = _stack_item_1; + _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(3); JUMP_TO_JUMP_TARGET(); } @@ -17267,13 +17400,13 @@ _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(3); #undef OFFSET_OF_YIELD_VALUE - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_IP_RETURN_VALUE_r00: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); #define OFFSET_OF_RETURN_VALUE ((frame->return_offset)) PyObject *ip = (PyObject *)CURRENT_OPERAND0_64(); _Py_CODEUNIT *target = frame->instr_ptr + OFFSET_OF_RETURN_VALUE; @@ -17287,13 +17420,13 @@ } SET_CURRENT_CACHED_VALUES(0); #undef OFFSET_OF_RETURN_VALUE - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_IP_RETURN_VALUE_r11: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef _stack_item_0 = _tos_cache0; #define OFFSET_OF_RETURN_VALUE ((frame->return_offset)) PyObject *ip = (PyObject *)CURRENT_OPERAND0_64(); @@ -17302,6 +17435,7 @@ frame->instr_ptr += OFFSET_OF_RETURN_VALUE; if (true) { UOP_STAT_INC(uopcode, miss); + _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(1); JUMP_TO_JUMP_TARGET(); } @@ -17309,13 +17443,13 @@ _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(1); #undef OFFSET_OF_RETURN_VALUE - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_IP_RETURN_VALUE_r22: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; #define OFFSET_OF_RETURN_VALUE ((frame->return_offset)) @@ -17325,6 +17459,8 @@ frame->instr_ptr += OFFSET_OF_RETURN_VALUE; if (true) { UOP_STAT_INC(uopcode, miss); + _tos_cache1 = _stack_item_1; + _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(2); JUMP_TO_JUMP_TARGET(); } @@ -17333,13 +17469,13 @@ _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(2); #undef OFFSET_OF_RETURN_VALUE - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_IP_RETURN_VALUE_r33: { CHECK_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; _PyStackRef _stack_item_2 = _tos_cache2; @@ -17350,6 +17486,9 @@ frame->instr_ptr += OFFSET_OF_RETURN_VALUE; if (true) { UOP_STAT_INC(uopcode, miss); + _tos_cache2 = _stack_item_2; + _tos_cache1 = _stack_item_1; + _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(3); JUMP_TO_JUMP_TARGET(); } @@ -17359,13 +17498,13 @@ _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(3); #undef OFFSET_OF_RETURN_VALUE - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_IP_RETURN_GENERATOR_r00: { CHECK_CURRENT_CACHED_VALUES(0); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); #define OFFSET_OF_RETURN_GENERATOR ((frame->return_offset)) PyObject *ip = (PyObject *)CURRENT_OPERAND0_64(); _Py_CODEUNIT *target = frame->instr_ptr + OFFSET_OF_RETURN_GENERATOR; @@ -17379,13 +17518,13 @@ } SET_CURRENT_CACHED_VALUES(0); #undef OFFSET_OF_RETURN_GENERATOR - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_IP_RETURN_GENERATOR_r11: { CHECK_CURRENT_CACHED_VALUES(1); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef _stack_item_0 = _tos_cache0; #define OFFSET_OF_RETURN_GENERATOR ((frame->return_offset)) PyObject *ip = (PyObject *)CURRENT_OPERAND0_64(); @@ -17394,6 +17533,7 @@ frame->instr_ptr += OFFSET_OF_RETURN_GENERATOR; if (true) { UOP_STAT_INC(uopcode, miss); + _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(1); JUMP_TO_JUMP_TARGET(); } @@ -17401,13 +17541,13 @@ _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(1); #undef OFFSET_OF_RETURN_GENERATOR - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_IP_RETURN_GENERATOR_r22: { CHECK_CURRENT_CACHED_VALUES(2); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; #define OFFSET_OF_RETURN_GENERATOR ((frame->return_offset)) @@ -17417,6 +17557,8 @@ frame->instr_ptr += OFFSET_OF_RETURN_GENERATOR; if (true) { UOP_STAT_INC(uopcode, miss); + _tos_cache1 = _stack_item_1; + _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(2); JUMP_TO_JUMP_TARGET(); } @@ -17425,13 +17567,13 @@ _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(2); #undef OFFSET_OF_RETURN_GENERATOR - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } case _GUARD_IP_RETURN_GENERATOR_r33: { CHECK_CURRENT_CACHED_VALUES(3); - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); _PyStackRef _stack_item_0 = _tos_cache0; _PyStackRef _stack_item_1 = _tos_cache1; _PyStackRef _stack_item_2 = _tos_cache2; @@ -17442,6 +17584,9 @@ frame->instr_ptr += OFFSET_OF_RETURN_GENERATOR; if (true) { UOP_STAT_INC(uopcode, miss); + _tos_cache2 = _stack_item_2; + _tos_cache1 = _stack_item_1; + _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(3); JUMP_TO_JUMP_TARGET(); } @@ -17451,7 +17596,7 @@ _tos_cache0 = _stack_item_0; SET_CURRENT_CACHED_VALUES(3); #undef OFFSET_OF_RETURN_GENERATOR - assert(WITHIN_STACK_BOUNDS_WITH_CACHE()); + assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE()); break; } diff --git a/Python/generated_cases.c.h b/Python/generated_cases.c.h index 9c828cba877ad4..2811a2ec8ac82d 100644 --- a/Python/generated_cases.c.h +++ b/Python/generated_cases.c.h @@ -96,6 +96,8 @@ _PyStackRef left; _PyStackRef right; _PyStackRef res; + _PyStackRef l; + _PyStackRef r; // _GUARD_TOS_FLOAT { value = stack_pointer[-1]; @@ -128,10 +130,24 @@ double dres = ((PyFloatObject *)left_o)->ob_fval + ((PyFloatObject *)right_o)->ob_fval; - res = _PyFloat_FromDouble_ConsumeInputs(left, right, dres); + res = PyStackRef_FromPyObjectSteal(PyFloat_FromDouble(dres)); if (PyStackRef_IsNull(res)) { - JUMP_TO_LABEL(pop_2_error); + JUMP_TO_LABEL(error); } + l = left; + r = right; + } + // _POP_TOP_FLOAT + { + value = r; + assert(PyFloat_CheckExact(PyStackRef_AsPyObjectBorrow(value))); + PyStackRef_CLOSE_SPECIALIZED(value, _PyFloat_ExactDealloc); + } + // _POP_TOP_FLOAT + { + value = l; + assert(PyFloat_CheckExact(PyStackRef_AsPyObjectBorrow(value))); + PyStackRef_CLOSE_SPECIALIZED(value, _PyFloat_ExactDealloc); } stack_pointer[-2] = res; stack_pointer += -1; @@ -154,6 +170,8 @@ _PyStackRef left; _PyStackRef right; _PyStackRef res; + _PyStackRef l; + _PyStackRef r; // _GUARD_TOS_INT { value = stack_pointer[-1]; @@ -190,8 +208,20 @@ assert(_PyOpcode_Deopt[opcode] == (BINARY_OP)); JUMP_TO_PREDICTED(BINARY_OP); } - PyStackRef_CLOSE_SPECIALIZED(right, _PyLong_ExactDealloc); - PyStackRef_CLOSE_SPECIALIZED(left, _PyLong_ExactDealloc); + l = left; + r = right; + } + // _POP_TOP_INT + { + value = r; + assert(PyLong_CheckExact(PyStackRef_AsPyObjectBorrow(value))); + PyStackRef_CLOSE_SPECIALIZED(value, _PyLong_ExactDealloc); + } + // _POP_TOP_INT + { + value = l; + assert(PyLong_CheckExact(PyStackRef_AsPyObjectBorrow(value))); + PyStackRef_CLOSE_SPECIALIZED(value, _PyLong_ExactDealloc); } stack_pointer[-2] = res; stack_pointer += -1; @@ -421,6 +451,8 @@ _PyStackRef left; _PyStackRef right; _PyStackRef res; + _PyStackRef l; + _PyStackRef r; // _GUARD_TOS_FLOAT { value = stack_pointer[-1]; @@ -453,10 +485,24 @@ double dres = ((PyFloatObject *)left_o)->ob_fval * ((PyFloatObject *)right_o)->ob_fval; - res = _PyFloat_FromDouble_ConsumeInputs(left, right, dres); + res = PyStackRef_FromPyObjectSteal(PyFloat_FromDouble(dres)); if (PyStackRef_IsNull(res)) { - JUMP_TO_LABEL(pop_2_error); + JUMP_TO_LABEL(error); } + l = left; + r = right; + } + // _POP_TOP_FLOAT + { + value = r; + assert(PyFloat_CheckExact(PyStackRef_AsPyObjectBorrow(value))); + PyStackRef_CLOSE_SPECIALIZED(value, _PyFloat_ExactDealloc); + } + // _POP_TOP_FLOAT + { + value = l; + assert(PyFloat_CheckExact(PyStackRef_AsPyObjectBorrow(value))); + PyStackRef_CLOSE_SPECIALIZED(value, _PyFloat_ExactDealloc); } stack_pointer[-2] = res; stack_pointer += -1; @@ -479,6 +525,8 @@ _PyStackRef left; _PyStackRef right; _PyStackRef res; + _PyStackRef l; + _PyStackRef r; // _GUARD_TOS_INT { value = stack_pointer[-1]; @@ -515,8 +563,20 @@ assert(_PyOpcode_Deopt[opcode] == (BINARY_OP)); JUMP_TO_PREDICTED(BINARY_OP); } - PyStackRef_CLOSE_SPECIALIZED(right, _PyLong_ExactDealloc); - PyStackRef_CLOSE_SPECIALIZED(left, _PyLong_ExactDealloc); + l = left; + r = right; + } + // _POP_TOP_INT + { + value = r; + assert(PyLong_CheckExact(PyStackRef_AsPyObjectBorrow(value))); + PyStackRef_CLOSE_SPECIALIZED(value, _PyLong_ExactDealloc); + } + // _POP_TOP_INT + { + value = l; + assert(PyLong_CheckExact(PyStackRef_AsPyObjectBorrow(value))); + PyStackRef_CLOSE_SPECIALIZED(value, _PyLong_ExactDealloc); } stack_pointer[-2] = res; stack_pointer += -1; @@ -1003,6 +1063,8 @@ _PyStackRef left; _PyStackRef right; _PyStackRef res; + _PyStackRef l; + _PyStackRef r; // _GUARD_TOS_FLOAT { value = stack_pointer[-1]; @@ -1035,10 +1097,24 @@ double dres = ((PyFloatObject *)left_o)->ob_fval - ((PyFloatObject *)right_o)->ob_fval; - res = _PyFloat_FromDouble_ConsumeInputs(left, right, dres); + res = PyStackRef_FromPyObjectSteal(PyFloat_FromDouble(dres)); if (PyStackRef_IsNull(res)) { - JUMP_TO_LABEL(pop_2_error); + JUMP_TO_LABEL(error); } + l = left; + r = right; + } + // _POP_TOP_FLOAT + { + value = r; + assert(PyFloat_CheckExact(PyStackRef_AsPyObjectBorrow(value))); + PyStackRef_CLOSE_SPECIALIZED(value, _PyFloat_ExactDealloc); + } + // _POP_TOP_FLOAT + { + value = l; + assert(PyFloat_CheckExact(PyStackRef_AsPyObjectBorrow(value))); + PyStackRef_CLOSE_SPECIALIZED(value, _PyFloat_ExactDealloc); } stack_pointer[-2] = res; stack_pointer += -1; @@ -1061,6 +1137,8 @@ _PyStackRef left; _PyStackRef right; _PyStackRef res; + _PyStackRef l; + _PyStackRef r; // _GUARD_TOS_INT { value = stack_pointer[-1]; @@ -1097,8 +1175,20 @@ assert(_PyOpcode_Deopt[opcode] == (BINARY_OP)); JUMP_TO_PREDICTED(BINARY_OP); } - PyStackRef_CLOSE_SPECIALIZED(right, _PyLong_ExactDealloc); - PyStackRef_CLOSE_SPECIALIZED(left, _PyLong_ExactDealloc); + l = left; + r = right; + } + // _POP_TOP_INT + { + value = r; + assert(PyLong_CheckExact(PyStackRef_AsPyObjectBorrow(value))); + PyStackRef_CLOSE_SPECIALIZED(value, _PyLong_ExactDealloc); + } + // _POP_TOP_INT + { + value = l; + assert(PyLong_CheckExact(PyStackRef_AsPyObjectBorrow(value))); + PyStackRef_CLOSE_SPECIALIZED(value, _PyLong_ExactDealloc); } stack_pointer[-2] = res; stack_pointer += -1; @@ -4496,6 +4586,8 @@ _PyStackRef left; _PyStackRef right; _PyStackRef res; + _PyStackRef l; + _PyStackRef r; // _GUARD_TOS_INT { value = stack_pointer[-1]; @@ -4530,10 +4622,22 @@ Py_ssize_t ileft = _PyLong_CompactValue((PyLongObject *)left_o); Py_ssize_t iright = _PyLong_CompactValue((PyLongObject *)right_o); int sign_ish = COMPARISON_BIT(ileft, iright); - PyStackRef_CLOSE_SPECIALIZED(left, _PyLong_ExactDealloc); - PyStackRef_CLOSE_SPECIALIZED(right, _PyLong_ExactDealloc); + l = left; + r = right; res = (sign_ish & oparg) ? PyStackRef_True : PyStackRef_False; } + // _POP_TOP_INT + { + value = r; + assert(PyLong_CheckExact(PyStackRef_AsPyObjectBorrow(value))); + PyStackRef_CLOSE_SPECIALIZED(value, _PyLong_ExactDealloc); + } + // _POP_TOP_INT + { + value = l; + assert(PyLong_CheckExact(PyStackRef_AsPyObjectBorrow(value))); + PyStackRef_CLOSE_SPECIALIZED(value, _PyLong_ExactDealloc); + } stack_pointer[-2] = res; stack_pointer += -1; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); @@ -10487,6 +10591,7 @@ static_assert(INLINE_CACHE_ENTRIES_STORE_ATTR == 4, "incorrect cache size"); _PyStackRef owner; _PyStackRef value; + _PyStackRef o; /* Skip 1 cache entry */ // _GUARD_TYPE_VERSION_AND_LOCK { @@ -10540,13 +10645,23 @@ _PyDictValues_AddToInsertionOrder(values, index); } UNLOCK_OBJECT(owner_o); - stack_pointer += -2; + o = owner; + stack_pointer[-2] = o; + stack_pointer += -1; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); _PyFrame_SetStackPointer(frame, stack_pointer); - PyStackRef_CLOSE(owner); Py_XDECREF(old_value); stack_pointer = _PyFrame_GetStackPointer(frame); } + // _POP_TOP + { + value = o; + stack_pointer += -1; + ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); + _PyFrame_SetStackPointer(frame, stack_pointer); + PyStackRef_XCLOSE(value); + stack_pointer = _PyFrame_GetStackPointer(frame); + } DISPATCH(); } @@ -10563,6 +10678,7 @@ static_assert(INLINE_CACHE_ENTRIES_STORE_ATTR == 4, "incorrect cache size"); _PyStackRef owner; _PyStackRef value; + _PyStackRef o; /* Skip 1 cache entry */ // _GUARD_TYPE_VERSION { @@ -10591,13 +10707,23 @@ PyObject *old_value = *(PyObject **)addr; FT_ATOMIC_STORE_PTR_RELEASE(*(PyObject **)addr, PyStackRef_AsPyObjectSteal(value)); UNLOCK_OBJECT(owner_o); - stack_pointer += -2; + o = owner; + stack_pointer[-2] = o; + stack_pointer += -1; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); _PyFrame_SetStackPointer(frame, stack_pointer); - PyStackRef_CLOSE(owner); Py_XDECREF(old_value); stack_pointer = _PyFrame_GetStackPointer(frame); } + // _POP_TOP + { + value = o; + stack_pointer += -1; + ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); + _PyFrame_SetStackPointer(frame, stack_pointer); + PyStackRef_XCLOSE(value); + stack_pointer = _PyFrame_GetStackPointer(frame); + } DISPATCH(); } diff --git a/Python/optimizer_analysis.c b/Python/optimizer_analysis.c index c4afc6bd29086f..a0210fdcbff3d3 100644 --- a/Python/optimizer_analysis.c +++ b/Python/optimizer_analysis.c @@ -196,7 +196,7 @@ check_stack_bounds(JitOptContext *ctx, JitOptRef *stack_pointer, int offset, int (opcode == _RETURN_VALUE) || (opcode == _RETURN_GENERATOR) || (opcode == _YIELD_VALUE); - if (should_check && (stack_level < 0 || stack_level > STACK_SIZE())) { + if (should_check && (stack_level < 0 || stack_level > STACK_SIZE() + MAX_CACHED_REGISTER)) { ctx->contradiction = true; ctx->done = true; return 1; @@ -312,7 +312,7 @@ _Py_opt_assert_within_stack_bounds( fflush(stdout); abort(); } - int size = (int)(frame->stack_len); + int size = (int)(frame->stack_len) + MAX_CACHED_REGISTER; if (level > size) { printf("Stack overflow (depth = %d) at %s:%d\n", level, filename, lineno); fflush(stdout); @@ -327,13 +327,6 @@ _Py_opt_assert_within_stack_bounds( #define ASSERT_WITHIN_STACK_BOUNDS(F, L) (void)0 #endif -// TODO (gh-134584) generate most of this table automatically -const uint16_t op_without_decref_inputs[MAX_UOP_ID + 1] = { - [_BINARY_OP_MULTIPLY_FLOAT] = _BINARY_OP_MULTIPLY_FLOAT__NO_DECREF_INPUTS, - [_BINARY_OP_ADD_FLOAT] = _BINARY_OP_ADD_FLOAT__NO_DECREF_INPUTS, - [_BINARY_OP_SUBTRACT_FLOAT] = _BINARY_OP_SUBTRACT_FLOAT__NO_DECREF_INPUTS, -}; - /* >0 (length) for success, 0 for not ready, clears all possible errors. */ static int optimize_uops( diff --git a/Python/optimizer_bytecodes.c b/Python/optimizer_bytecodes.c index 5023f84213b359..decf98865aea79 100644 --- a/Python/optimizer_bytecodes.c +++ b/Python/optimizer_bytecodes.c @@ -99,6 +99,11 @@ dummy_func(void) { GETLOCAL(oparg) = temp; } + op(_STORE_ATTR_INSTANCE_VALUE, (offset/1, value, owner -- o)) { + (void)value; + o = owner; + } + op(_STORE_FAST, (value --)) { GETLOCAL(oparg) = value; } @@ -109,6 +114,12 @@ dummy_func(void) { ss = sub_st; } + op(_STORE_ATTR_SLOT, (index/1, value, owner -- o)) { + (void)index; + (void)value; + o = owner; + } + op(_STORE_SUBSCR_DICT, (value, dict_st, sub -- st)) { (void)value; st = dict_st; @@ -246,46 +257,40 @@ dummy_func(void) { } } - op(_BINARY_OP_ADD_INT, (left, right -- res)) { - REPLACE_OPCODE_IF_EVALUATES_PURE(left, right); + op(_BINARY_OP_ADD_INT, (left, right -- res, l, r)) { res = sym_new_compact_int(ctx); + l = left; + r = right; } - op(_BINARY_OP_SUBTRACT_INT, (left, right -- res)) { - REPLACE_OPCODE_IF_EVALUATES_PURE(left, right); + op(_BINARY_OP_SUBTRACT_INT, (left, right -- res, l, r)) { res = sym_new_compact_int(ctx); + l = left; + r = right; } - op(_BINARY_OP_MULTIPLY_INT, (left, right -- res)) { - REPLACE_OPCODE_IF_EVALUATES_PURE(left, right); + op(_BINARY_OP_MULTIPLY_INT, (left, right -- res, l, r)) { res = sym_new_compact_int(ctx); + l = left; + r = right; } - op(_BINARY_OP_ADD_FLOAT, (left, right -- res)) { - REPLACE_OPCODE_IF_EVALUATES_PURE(left, right); + op(_BINARY_OP_ADD_FLOAT, (left, right -- res, l, r)) { res = sym_new_type(ctx, &PyFloat_Type); - // TODO (gh-134584): Refactor this to use another uop - if (PyJitRef_IsBorrowed(left) && PyJitRef_IsBorrowed(right)) { - REPLACE_OP(this_instr, op_without_decref_inputs[opcode], oparg, 0); - } + l = left; + r = right; } - op(_BINARY_OP_SUBTRACT_FLOAT, (left, right -- res)) { - REPLACE_OPCODE_IF_EVALUATES_PURE(left, right); + op(_BINARY_OP_SUBTRACT_FLOAT, (left, right -- res, l, r)) { res = sym_new_type(ctx, &PyFloat_Type); - // TODO (gh-134584): Refactor this to use another uop - if (PyJitRef_IsBorrowed(left) && PyJitRef_IsBorrowed(right)) { - REPLACE_OP(this_instr, op_without_decref_inputs[opcode], oparg, 0); - } + l = left; + r = right; } - op(_BINARY_OP_MULTIPLY_FLOAT, (left, right -- res)) { - REPLACE_OPCODE_IF_EVALUATES_PURE(left, right); + op(_BINARY_OP_MULTIPLY_FLOAT, (left, right -- res, l, r)) { res = sym_new_type(ctx, &PyFloat_Type); - // TODO (gh-134584): Refactor this to use another uop - if (PyJitRef_IsBorrowed(left) && PyJitRef_IsBorrowed(right)) { - REPLACE_OP(this_instr, op_without_decref_inputs[opcode], oparg, 0); - } + l = left; + r = right; } op(_BINARY_OP_ADD_UNICODE, (left, right -- res)) { @@ -447,9 +452,10 @@ dummy_func(void) { } } - op(_COMPARE_OP_INT, (left, right -- res)) { - REPLACE_OPCODE_IF_EVALUATES_PURE(left, right); + op(_COMPARE_OP_INT, (left, right -- res, l, r)) { res = sym_new_type(ctx, &PyBool_Type); + l = left; + r = right; } op(_COMPARE_OP_FLOAT, (left, right -- res)) { @@ -546,6 +552,12 @@ dummy_func(void) { } } + op(_POP_TOP_FLOAT, (value --)) { + if (PyJitRef_IsBorrowed(value)) { + REPLACE_OP(this_instr, _POP_TOP_NOP, 0, 0); + } + } + op(_COPY, (bottom, unused[oparg-1] -- bottom, unused[oparg-1], top)) { assert(oparg > 0); top = bottom; diff --git a/Python/optimizer_cases.c.h b/Python/optimizer_cases.c.h index 72564ea32db772..cdab0fd2ef872e 100644 --- a/Python/optimizer_cases.c.h +++ b/Python/optimizer_cases.c.h @@ -153,6 +153,11 @@ } case _POP_TOP_FLOAT: { + JitOptRef value; + value = stack_pointer[-1]; + if (PyJitRef_IsBorrowed(value)) { + REPLACE_OP(this_instr, _POP_TOP_NOP, 0, 0); + } CHECK_STACK_BOUNDS(-1); stack_pointer += -1; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); @@ -492,50 +497,18 @@ JitOptRef right; JitOptRef left; JitOptRef res; + JitOptRef l; + JitOptRef r; right = stack_pointer[-1]; left = stack_pointer[-2]; - if ( - sym_is_safe_const(ctx, left) && - sym_is_safe_const(ctx, right) - ) { - JitOptRef left_sym = left; - JitOptRef right_sym = right; - _PyStackRef left = sym_get_const_as_stackref(ctx, left_sym); - _PyStackRef right = sym_get_const_as_stackref(ctx, right_sym); - _PyStackRef res_stackref; - /* Start of uop copied from bytecodes for constant evaluation */ - PyObject *left_o = PyStackRef_AsPyObjectBorrow(left); - PyObject *right_o = PyStackRef_AsPyObjectBorrow(right); - assert(PyLong_CheckExact(left_o)); - assert(PyLong_CheckExact(right_o)); - assert(_PyLong_BothAreCompact((PyLongObject *)left_o, (PyLongObject *)right_o)); - STAT_INC(BINARY_OP, hit); - res_stackref = _PyCompactLong_Multiply((PyLongObject *)left_o, (PyLongObject *)right_o); - if (PyStackRef_IsNull(res_stackref )) { - ctx->done = true; - break; - } - PyStackRef_CLOSE_SPECIALIZED(right, _PyLong_ExactDealloc); - PyStackRef_CLOSE_SPECIALIZED(left, _PyLong_ExactDealloc); - /* End of uop copied from bytecodes for constant evaluation */ - res = sym_new_const_steal(ctx, PyStackRef_AsPyObjectSteal(res_stackref)); - if (sym_is_const(ctx, res)) { - PyObject *result = sym_get_const(ctx, res); - if (_Py_IsImmortal(result)) { - // Replace with _POP_TWO_LOAD_CONST_INLINE_BORROW since we have two inputs and an immortal result - REPLACE_OP(this_instr, _POP_TWO_LOAD_CONST_INLINE_BORROW, 0, (uintptr_t)result); - } - } - CHECK_STACK_BOUNDS(-1); - stack_pointer[-2] = res; - stack_pointer += -1; - ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - break; - } res = sym_new_compact_int(ctx); - CHECK_STACK_BOUNDS(-1); + l = left; + r = right; + CHECK_STACK_BOUNDS(1); stack_pointer[-2] = res; - stack_pointer += -1; + stack_pointer[-1] = l; + stack_pointer[0] = r; + stack_pointer += 1; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); break; } @@ -544,50 +517,18 @@ JitOptRef right; JitOptRef left; JitOptRef res; + JitOptRef l; + JitOptRef r; right = stack_pointer[-1]; left = stack_pointer[-2]; - if ( - sym_is_safe_const(ctx, left) && - sym_is_safe_const(ctx, right) - ) { - JitOptRef left_sym = left; - JitOptRef right_sym = right; - _PyStackRef left = sym_get_const_as_stackref(ctx, left_sym); - _PyStackRef right = sym_get_const_as_stackref(ctx, right_sym); - _PyStackRef res_stackref; - /* Start of uop copied from bytecodes for constant evaluation */ - PyObject *left_o = PyStackRef_AsPyObjectBorrow(left); - PyObject *right_o = PyStackRef_AsPyObjectBorrow(right); - assert(PyLong_CheckExact(left_o)); - assert(PyLong_CheckExact(right_o)); - assert(_PyLong_BothAreCompact((PyLongObject *)left_o, (PyLongObject *)right_o)); - STAT_INC(BINARY_OP, hit); - res_stackref = _PyCompactLong_Add((PyLongObject *)left_o, (PyLongObject *)right_o); - if (PyStackRef_IsNull(res_stackref )) { - ctx->done = true; - break; - } - PyStackRef_CLOSE_SPECIALIZED(right, _PyLong_ExactDealloc); - PyStackRef_CLOSE_SPECIALIZED(left, _PyLong_ExactDealloc); - /* End of uop copied from bytecodes for constant evaluation */ - res = sym_new_const_steal(ctx, PyStackRef_AsPyObjectSteal(res_stackref)); - if (sym_is_const(ctx, res)) { - PyObject *result = sym_get_const(ctx, res); - if (_Py_IsImmortal(result)) { - // Replace with _POP_TWO_LOAD_CONST_INLINE_BORROW since we have two inputs and an immortal result - REPLACE_OP(this_instr, _POP_TWO_LOAD_CONST_INLINE_BORROW, 0, (uintptr_t)result); - } - } - CHECK_STACK_BOUNDS(-1); - stack_pointer[-2] = res; - stack_pointer += -1; - ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - break; - } res = sym_new_compact_int(ctx); - CHECK_STACK_BOUNDS(-1); + l = left; + r = right; + CHECK_STACK_BOUNDS(1); stack_pointer[-2] = res; - stack_pointer += -1; + stack_pointer[-1] = l; + stack_pointer[0] = r; + stack_pointer += 1; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); break; } @@ -596,50 +537,18 @@ JitOptRef right; JitOptRef left; JitOptRef res; + JitOptRef l; + JitOptRef r; right = stack_pointer[-1]; left = stack_pointer[-2]; - if ( - sym_is_safe_const(ctx, left) && - sym_is_safe_const(ctx, right) - ) { - JitOptRef left_sym = left; - JitOptRef right_sym = right; - _PyStackRef left = sym_get_const_as_stackref(ctx, left_sym); - _PyStackRef right = sym_get_const_as_stackref(ctx, right_sym); - _PyStackRef res_stackref; - /* Start of uop copied from bytecodes for constant evaluation */ - PyObject *left_o = PyStackRef_AsPyObjectBorrow(left); - PyObject *right_o = PyStackRef_AsPyObjectBorrow(right); - assert(PyLong_CheckExact(left_o)); - assert(PyLong_CheckExact(right_o)); - assert(_PyLong_BothAreCompact((PyLongObject *)left_o, (PyLongObject *)right_o)); - STAT_INC(BINARY_OP, hit); - res_stackref = _PyCompactLong_Subtract((PyLongObject *)left_o, (PyLongObject *)right_o); - if (PyStackRef_IsNull(res_stackref )) { - ctx->done = true; - break; - } - PyStackRef_CLOSE_SPECIALIZED(right, _PyLong_ExactDealloc); - PyStackRef_CLOSE_SPECIALIZED(left, _PyLong_ExactDealloc); - /* End of uop copied from bytecodes for constant evaluation */ - res = sym_new_const_steal(ctx, PyStackRef_AsPyObjectSteal(res_stackref)); - if (sym_is_const(ctx, res)) { - PyObject *result = sym_get_const(ctx, res); - if (_Py_IsImmortal(result)) { - // Replace with _POP_TWO_LOAD_CONST_INLINE_BORROW since we have two inputs and an immortal result - REPLACE_OP(this_instr, _POP_TWO_LOAD_CONST_INLINE_BORROW, 0, (uintptr_t)result); - } - } - CHECK_STACK_BOUNDS(-1); - stack_pointer[-2] = res; - stack_pointer += -1; - ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - break; - } res = sym_new_compact_int(ctx); - CHECK_STACK_BOUNDS(-1); + l = left; + r = right; + CHECK_STACK_BOUNDS(1); stack_pointer[-2] = res; - stack_pointer += -1; + stack_pointer[-1] = l; + stack_pointer[0] = r; + stack_pointer += 1; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); break; } @@ -668,52 +577,18 @@ JitOptRef right; JitOptRef left; JitOptRef res; + JitOptRef l; + JitOptRef r; right = stack_pointer[-1]; left = stack_pointer[-2]; - if ( - sym_is_safe_const(ctx, left) && - sym_is_safe_const(ctx, right) - ) { - JitOptRef left_sym = left; - JitOptRef right_sym = right; - _PyStackRef left = sym_get_const_as_stackref(ctx, left_sym); - _PyStackRef right = sym_get_const_as_stackref(ctx, right_sym); - _PyStackRef res_stackref; - /* Start of uop copied from bytecodes for constant evaluation */ - PyObject *left_o = PyStackRef_AsPyObjectBorrow(left); - PyObject *right_o = PyStackRef_AsPyObjectBorrow(right); - assert(PyFloat_CheckExact(left_o)); - assert(PyFloat_CheckExact(right_o)); - STAT_INC(BINARY_OP, hit); - double dres = - ((PyFloatObject *)left_o)->ob_fval * - ((PyFloatObject *)right_o)->ob_fval; - res_stackref = _PyFloat_FromDouble_ConsumeInputs(left, right, dres); - if (PyStackRef_IsNull(res_stackref )) { - goto error; - } - /* End of uop copied from bytecodes for constant evaluation */ - res = sym_new_const_steal(ctx, PyStackRef_AsPyObjectSteal(res_stackref)); - if (sym_is_const(ctx, res)) { - PyObject *result = sym_get_const(ctx, res); - if (_Py_IsImmortal(result)) { - // Replace with _POP_TWO_LOAD_CONST_INLINE_BORROW since we have two inputs and an immortal result - REPLACE_OP(this_instr, _POP_TWO_LOAD_CONST_INLINE_BORROW, 0, (uintptr_t)result); - } - } - CHECK_STACK_BOUNDS(-1); - stack_pointer[-2] = res; - stack_pointer += -1; - ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - break; - } res = sym_new_type(ctx, &PyFloat_Type); - if (PyJitRef_IsBorrowed(left) && PyJitRef_IsBorrowed(right)) { - REPLACE_OP(this_instr, op_without_decref_inputs[opcode], oparg, 0); - } - CHECK_STACK_BOUNDS(-1); + l = left; + r = right; + CHECK_STACK_BOUNDS(1); stack_pointer[-2] = res; - stack_pointer += -1; + stack_pointer[-1] = l; + stack_pointer[0] = r; + stack_pointer += 1; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); break; } @@ -722,52 +597,18 @@ JitOptRef right; JitOptRef left; JitOptRef res; + JitOptRef l; + JitOptRef r; right = stack_pointer[-1]; left = stack_pointer[-2]; - if ( - sym_is_safe_const(ctx, left) && - sym_is_safe_const(ctx, right) - ) { - JitOptRef left_sym = left; - JitOptRef right_sym = right; - _PyStackRef left = sym_get_const_as_stackref(ctx, left_sym); - _PyStackRef right = sym_get_const_as_stackref(ctx, right_sym); - _PyStackRef res_stackref; - /* Start of uop copied from bytecodes for constant evaluation */ - PyObject *left_o = PyStackRef_AsPyObjectBorrow(left); - PyObject *right_o = PyStackRef_AsPyObjectBorrow(right); - assert(PyFloat_CheckExact(left_o)); - assert(PyFloat_CheckExact(right_o)); - STAT_INC(BINARY_OP, hit); - double dres = - ((PyFloatObject *)left_o)->ob_fval + - ((PyFloatObject *)right_o)->ob_fval; - res_stackref = _PyFloat_FromDouble_ConsumeInputs(left, right, dres); - if (PyStackRef_IsNull(res_stackref )) { - goto error; - } - /* End of uop copied from bytecodes for constant evaluation */ - res = sym_new_const_steal(ctx, PyStackRef_AsPyObjectSteal(res_stackref)); - if (sym_is_const(ctx, res)) { - PyObject *result = sym_get_const(ctx, res); - if (_Py_IsImmortal(result)) { - // Replace with _POP_TWO_LOAD_CONST_INLINE_BORROW since we have two inputs and an immortal result - REPLACE_OP(this_instr, _POP_TWO_LOAD_CONST_INLINE_BORROW, 0, (uintptr_t)result); - } - } - CHECK_STACK_BOUNDS(-1); - stack_pointer[-2] = res; - stack_pointer += -1; - ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - break; - } res = sym_new_type(ctx, &PyFloat_Type); - if (PyJitRef_IsBorrowed(left) && PyJitRef_IsBorrowed(right)) { - REPLACE_OP(this_instr, op_without_decref_inputs[opcode], oparg, 0); - } - CHECK_STACK_BOUNDS(-1); + l = left; + r = right; + CHECK_STACK_BOUNDS(1); stack_pointer[-2] = res; - stack_pointer += -1; + stack_pointer[-1] = l; + stack_pointer[0] = r; + stack_pointer += 1; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); break; } @@ -776,82 +617,18 @@ JitOptRef right; JitOptRef left; JitOptRef res; + JitOptRef l; + JitOptRef r; right = stack_pointer[-1]; left = stack_pointer[-2]; - if ( - sym_is_safe_const(ctx, left) && - sym_is_safe_const(ctx, right) - ) { - JitOptRef left_sym = left; - JitOptRef right_sym = right; - _PyStackRef left = sym_get_const_as_stackref(ctx, left_sym); - _PyStackRef right = sym_get_const_as_stackref(ctx, right_sym); - _PyStackRef res_stackref; - /* Start of uop copied from bytecodes for constant evaluation */ - PyObject *left_o = PyStackRef_AsPyObjectBorrow(left); - PyObject *right_o = PyStackRef_AsPyObjectBorrow(right); - assert(PyFloat_CheckExact(left_o)); - assert(PyFloat_CheckExact(right_o)); - STAT_INC(BINARY_OP, hit); - double dres = - ((PyFloatObject *)left_o)->ob_fval - - ((PyFloatObject *)right_o)->ob_fval; - res_stackref = _PyFloat_FromDouble_ConsumeInputs(left, right, dres); - if (PyStackRef_IsNull(res_stackref )) { - goto error; - } - /* End of uop copied from bytecodes for constant evaluation */ - res = sym_new_const_steal(ctx, PyStackRef_AsPyObjectSteal(res_stackref)); - if (sym_is_const(ctx, res)) { - PyObject *result = sym_get_const(ctx, res); - if (_Py_IsImmortal(result)) { - // Replace with _POP_TWO_LOAD_CONST_INLINE_BORROW since we have two inputs and an immortal result - REPLACE_OP(this_instr, _POP_TWO_LOAD_CONST_INLINE_BORROW, 0, (uintptr_t)result); - } - } - CHECK_STACK_BOUNDS(-1); - stack_pointer[-2] = res; - stack_pointer += -1; - ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - break; - } res = sym_new_type(ctx, &PyFloat_Type); - if (PyJitRef_IsBorrowed(left) && PyJitRef_IsBorrowed(right)) { - REPLACE_OP(this_instr, op_without_decref_inputs[opcode], oparg, 0); - } - CHECK_STACK_BOUNDS(-1); - stack_pointer[-2] = res; - stack_pointer += -1; - ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - break; - } - - case _BINARY_OP_MULTIPLY_FLOAT__NO_DECREF_INPUTS: { - JitOptRef res; - res = sym_new_not_null(ctx); - CHECK_STACK_BOUNDS(-1); - stack_pointer[-2] = res; - stack_pointer += -1; - ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - break; - } - - case _BINARY_OP_ADD_FLOAT__NO_DECREF_INPUTS: { - JitOptRef res; - res = sym_new_not_null(ctx); - CHECK_STACK_BOUNDS(-1); - stack_pointer[-2] = res; - stack_pointer += -1; - ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - break; - } - - case _BINARY_OP_SUBTRACT_FLOAT__NO_DECREF_INPUTS: { - JitOptRef res; - res = sym_new_not_null(ctx); - CHECK_STACK_BOUNDS(-1); + l = left; + r = right; + CHECK_STACK_BOUNDS(1); stack_pointer[-2] = res; - stack_pointer += -1; + stack_pointer[-1] = l; + stack_pointer[0] = r; + stack_pointer += 1; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); break; } @@ -1898,8 +1675,17 @@ } case _STORE_ATTR_INSTANCE_VALUE: { - CHECK_STACK_BOUNDS(-2); - stack_pointer += -2; + JitOptRef owner; + JitOptRef value; + JitOptRef o; + owner = stack_pointer[-1]; + value = stack_pointer[-2]; + uint16_t offset = (uint16_t)this_instr->operand0; + (void)value; + o = owner; + CHECK_STACK_BOUNDS(-1); + stack_pointer[-2] = o; + stack_pointer += -1; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); break; } @@ -1912,8 +1698,18 @@ } case _STORE_ATTR_SLOT: { - CHECK_STACK_BOUNDS(-2); - stack_pointer += -2; + JitOptRef owner; + JitOptRef value; + JitOptRef o; + owner = stack_pointer[-1]; + value = stack_pointer[-2]; + uint16_t index = (uint16_t)this_instr->operand0; + (void)index; + (void)value; + o = owner; + CHECK_STACK_BOUNDS(-1); + stack_pointer[-2] = o; + stack_pointer += -1; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); break; } @@ -2032,50 +1828,18 @@ JitOptRef right; JitOptRef left; JitOptRef res; + JitOptRef l; + JitOptRef r; right = stack_pointer[-1]; left = stack_pointer[-2]; - if ( - sym_is_safe_const(ctx, left) && - sym_is_safe_const(ctx, right) - ) { - JitOptRef left_sym = left; - JitOptRef right_sym = right; - _PyStackRef left = sym_get_const_as_stackref(ctx, left_sym); - _PyStackRef right = sym_get_const_as_stackref(ctx, right_sym); - _PyStackRef res_stackref; - /* Start of uop copied from bytecodes for constant evaluation */ - PyObject *left_o = PyStackRef_AsPyObjectBorrow(left); - PyObject *right_o = PyStackRef_AsPyObjectBorrow(right); - assert(_PyLong_IsCompact((PyLongObject *)left_o)); - assert(_PyLong_IsCompact((PyLongObject *)right_o)); - STAT_INC(COMPARE_OP, hit); - assert(_PyLong_DigitCount((PyLongObject *)left_o) <= 1 && - _PyLong_DigitCount((PyLongObject *)right_o) <= 1); - Py_ssize_t ileft = _PyLong_CompactValue((PyLongObject *)left_o); - Py_ssize_t iright = _PyLong_CompactValue((PyLongObject *)right_o); - int sign_ish = COMPARISON_BIT(ileft, iright); - PyStackRef_CLOSE_SPECIALIZED(left, _PyLong_ExactDealloc); - PyStackRef_CLOSE_SPECIALIZED(right, _PyLong_ExactDealloc); - res_stackref = (sign_ish & oparg) ? PyStackRef_True : PyStackRef_False; - /* End of uop copied from bytecodes for constant evaluation */ - res = sym_new_const_steal(ctx, PyStackRef_AsPyObjectSteal(res_stackref)); - if (sym_is_const(ctx, res)) { - PyObject *result = sym_get_const(ctx, res); - if (_Py_IsImmortal(result)) { - // Replace with _POP_TWO_LOAD_CONST_INLINE_BORROW since we have two inputs and an immortal result - REPLACE_OP(this_instr, _POP_TWO_LOAD_CONST_INLINE_BORROW, 0, (uintptr_t)result); - } - } - CHECK_STACK_BOUNDS(-1); - stack_pointer[-2] = res; - stack_pointer += -1; - ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); - break; - } res = sym_new_type(ctx, &PyBool_Type); - CHECK_STACK_BOUNDS(-1); + l = left; + r = right; + CHECK_STACK_BOUNDS(1); stack_pointer[-2] = res; - stack_pointer += -1; + stack_pointer[-1] = l; + stack_pointer[0] = r; + stack_pointer += 1; ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__); break; } diff --git a/Python/traceback.c b/Python/traceback.c index 8af63c22a9f84e..264f034dea7fa5 100644 --- a/Python/traceback.c +++ b/Python/traceback.c @@ -415,6 +415,9 @@ _Py_FindSourceFile(PyObject *filename, char* namebuf, size_t namelen, PyObject * npath = PyList_Size(syspath); open = PyObject_GetAttr(io, &_Py_ID(open)); + if (open == NULL) { + goto error; + } for (i = 0; i < npath; i++) { v = PyList_GetItem(syspath, i); if (v == NULL) { diff --git a/Tools/cases_generator/analyzer.py b/Tools/cases_generator/analyzer.py index f6575a93e47a31..fcd0dcf12acb2b 100644 --- a/Tools/cases_generator/analyzer.py +++ b/Tools/cases_generator/analyzer.py @@ -634,7 +634,6 @@ def has_error_without_pop(op: parser.CodeDef) -> bool: "_PyCode_CODE", "_PyDictValues_AddToInsertionOrder", "_PyErr_Occurred", - "_PyFloat_FromDouble_ConsumeInputs", "_PyFrame_GetBytecode", "_PyFrame_GetCode", "_PyFrame_IsIncomplete", @@ -1372,11 +1371,6 @@ def get_uop_cache_depths(uop: Uop) -> Iterator[tuple[int, int, int]]: if uop.name == "_ERROR_POP_N": yield 0, 0, 0 return - non_decref_escape = False - for call in uop.properties.escaping_calls.values(): - if "DECREF" in call.call.text or "CLOSE" in call.call.text: - continue - non_decref_escape = True ideal_inputs = 0 has_array = False for item in reversed(uop.stack.inputs): @@ -1394,9 +1388,6 @@ def get_uop_cache_depths(uop: Uop) -> Iterator[tuple[int, int, int]]: ideal_inputs = MAX_CACHED_REGISTER if ideal_outputs > MAX_CACHED_REGISTER: ideal_outputs = MAX_CACHED_REGISTER - if non_decref_escape: - yield ideal_inputs, ideal_outputs, 0 - return at_end = uop.properties.sync_sp or uop.properties.side_exit_at_end exit_depth = ideal_outputs if at_end else ideal_inputs if uop.properties.escapes or uop.properties.sync_sp or has_array or is_large(uop): diff --git a/Tools/cases_generator/tier2_generator.py b/Tools/cases_generator/tier2_generator.py index 9c86382cdc5610..9dc529753deef8 100644 --- a/Tools/cases_generator/tier2_generator.py +++ b/Tools/cases_generator/tier2_generator.py @@ -95,7 +95,9 @@ def exit_if( next(tkn_iter) # Semi colon self.emit(") {\n") self.emit("UOP_STAT_INC(uopcode, miss);\n") - self.emit(f"SET_CURRENT_CACHED_VALUES({self.exit_cache_depth});\n") + storage = storage.copy() + self.cache_items(storage.stack, self.exit_cache_depth, False) + storage.stack.flush(self.out) self.emit("JUMP_TO_JUMP_TARGET();\n") self.emit("}\n") return not always_true(first_tkn) @@ -151,7 +153,7 @@ def tier2_to_tier2( inst: Instruction | None, ) -> bool: assert self.exit_cache_depth == 0, uop.name - cache_items(self, storage.stack, self.exit_cache_depth, False) + self.cache_items(storage.stack, self.exit_cache_depth, False) storage.flush(self.out) self.out.emit(tkn) lparen = next(tkn_iter) @@ -181,31 +183,31 @@ def exit_if_after( self.emit("UOP_STAT_INC(uopcode, miss);\n") storage = storage.copy() storage.clear_inputs("in AT_END_EXIT_IF") - cache_items(self, storage.stack, self.exit_cache_depth, False) + self.cache_items(storage.stack, self.exit_cache_depth, False) storage.flush(self.out) self.emit("JUMP_TO_JUMP_TARGET();\n") self.emit("}\n") return not always_true(first_tkn) - -def cache_items(emitter: Emitter, stack: Stack, cached_items: int, zero_regs: bool) -> None: - emitter.out.start_line() - i = cached_items - while i > 0: - emitter.out.start_line() - item = StackItem(f"_tos_cache{i-1}", "", False, True) - stack.pop(item, emitter.out) - i -= 1 - if zero_regs: - # TO DO -- For compilers that support it, - # replace this with a "clobber" to tell - # the compiler that these values are unused - # without having to emit any code. - for i in range(cached_items, MAX_CACHED_REGISTER): - emitter.out.emit(f"_tos_cache{i} = PyStackRef_ZERO_BITS;\n") - emitter.emit(f"SET_CURRENT_CACHED_VALUES({cached_items});\n") - -def write_uop(uop: Uop, emitter: Emitter, stack: Stack, offset_strs: dict[str, tuple[str, str]], cached_items: int = 0) -> tuple[bool, Stack]: + def cache_items(self, stack: Stack, cached_items: int, zero_regs: bool) -> None: + self.out.start_line() + i = cached_items + while i > 0: + self.out.start_line() + item = StackItem(f"_tos_cache{i-1}", "", False, True) + stack.pop(item, self.out) + i -= 1 + if zero_regs: + # TO DO -- For compilers that support it, + # replace this with a "clobber" to tell + # the compiler that these values are unused + # without having to emit any code. + for i in range(cached_items, MAX_CACHED_REGISTER): + self.out.emit(f"_tos_cache{i} = PyStackRef_ZERO_BITS;\n") + self.emit(f"SET_CURRENT_CACHED_VALUES({cached_items});\n") + + +def write_uop(uop: Uop, emitter: Tier2Emitter, stack: Stack, offset_strs: dict[str, tuple[str, str]], cached_items: int = 0) -> tuple[bool, Stack]: locals: dict[str, Local] = {} zero_regs = is_large(uop) or uop.properties.escapes try: @@ -233,7 +235,7 @@ def write_uop(uop: Uop, emitter: Emitter, stack: Stack, offset_strs: dict[str, t reachable, storage = emitter.emit_tokens(uop, storage, None, False) if reachable: storage.stack._print(emitter.out) - cache_items(emitter, storage.stack, cached_items, zero_regs) + emitter.cache_items(storage.stack, cached_items, zero_regs) storage.flush(emitter.out) if name_offset_pair: emitter.emit(f"#undef OFFSET_OF_{name_offset_pair[0]}\n") @@ -303,7 +305,7 @@ def generate_tier2( emitter = Tier2Emitter(out, analysis.labels, exit_depth) out.emit(f"case {uop.name}_r{inputs}{outputs}: {{\n") out.emit(f"CHECK_CURRENT_CACHED_VALUES({inputs});\n") - out.emit("assert(WITHIN_STACK_BOUNDS_WITH_CACHE());\n") + out.emit("assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE());\n") declare_variables(uop, out) stack = Stack() stack.push_cache([f"_tos_cache{i}" for i in range(inputs)], out) @@ -311,7 +313,7 @@ def generate_tier2( reachable, stack = write_uop(uop, emitter, stack, offset_strs, outputs) out.start_line() if reachable: - out.emit("assert(WITHIN_STACK_BOUNDS_WITH_CACHE());\n") + out.emit("assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE());\n") if not uop.properties.always_exits: out.emit("break;\n") out.start_line()