@@ -2758,22 +2758,22 @@ _PyEval_EvalFrameDefault(PyThreadState *tstate, _PyInterpreterFrame *frame, int
27582758 }
27592759 STACK_GROW (oparg );
27602760 Py_DECREF (seq );
2761+ JUMPBY (INLINE_CACHE_ENTRIES_UNPACK_SEQUENCE );
27612762 DISPATCH ();
27622763 }
27632764
27642765 TARGET (UNPACK_SEQUENCE_ADAPTIVE ) {
27652766 assert (cframe .use_tracing == 0 );
2766- SpecializedCacheEntry * cache = GET_CACHE () ;
2767- if (cache -> adaptive . counter == 0 ) {
2767+ _PyUnpackSequenceCache * cache = ( _PyUnpackSequenceCache * ) next_instr ;
2768+ if (cache -> counter == 0 ) {
27682769 PyObject * seq = TOP ();
27692770 next_instr -- ;
2770- _Py_Specialize_UnpackSequence (seq , next_instr , cache );
2771+ _Py_Specialize_UnpackSequence (seq , next_instr , oparg );
27712772 DISPATCH ();
27722773 }
27732774 else {
27742775 STAT_INC (UNPACK_SEQUENCE , deferred );
2775- cache -> adaptive .counter -- ;
2776- oparg = cache -> adaptive .original_oparg ;
2776+ cache -> counter -- ;
27772777 JUMP_TO_INSTRUCTION (UNPACK_SEQUENCE );
27782778 }
27792779 }
@@ -2786,36 +2786,37 @@ _PyEval_EvalFrameDefault(PyThreadState *tstate, _PyInterpreterFrame *frame, int
27862786 SET_TOP (Py_NewRef (PyTuple_GET_ITEM (seq , 1 )));
27872787 PUSH (Py_NewRef (PyTuple_GET_ITEM (seq , 0 )));
27882788 Py_DECREF (seq );
2789+ JUMPBY (INLINE_CACHE_ENTRIES_UNPACK_SEQUENCE );
27892790 NOTRACE_DISPATCH ();
27902791 }
27912792
27922793 TARGET (UNPACK_SEQUENCE_TUPLE ) {
27932794 PyObject * seq = TOP ();
2794- int len = GET_CACHE ()-> adaptive .original_oparg ;
27952795 DEOPT_IF (!PyTuple_CheckExact (seq ), UNPACK_SEQUENCE );
2796- DEOPT_IF (PyTuple_GET_SIZE (seq ) != len , UNPACK_SEQUENCE );
2796+ DEOPT_IF (PyTuple_GET_SIZE (seq ) != oparg , UNPACK_SEQUENCE );
27972797 STAT_INC (UNPACK_SEQUENCE , hit );
27982798 STACK_SHRINK (1 );
27992799 PyObject * * items = _PyTuple_ITEMS (seq );
2800- while (len -- ) {
2801- PUSH (Py_NewRef (items [len ]));
2800+ while (oparg -- ) {
2801+ PUSH (Py_NewRef (items [oparg ]));
28022802 }
28032803 Py_DECREF (seq );
2804+ JUMPBY (INLINE_CACHE_ENTRIES_UNPACK_SEQUENCE );
28042805 NOTRACE_DISPATCH ();
28052806 }
28062807
28072808 TARGET (UNPACK_SEQUENCE_LIST ) {
28082809 PyObject * seq = TOP ();
2809- int len = GET_CACHE ()-> adaptive .original_oparg ;
28102810 DEOPT_IF (!PyList_CheckExact (seq ), UNPACK_SEQUENCE );
2811- DEOPT_IF (PyList_GET_SIZE (seq ) != len , UNPACK_SEQUENCE );
2811+ DEOPT_IF (PyList_GET_SIZE (seq ) != oparg , UNPACK_SEQUENCE );
28122812 STAT_INC (UNPACK_SEQUENCE , hit );
28132813 STACK_SHRINK (1 );
28142814 PyObject * * items = _PyList_ITEMS (seq );
2815- while (len -- ) {
2816- PUSH (Py_NewRef (items [len ]));
2815+ while (oparg -- ) {
2816+ PUSH (Py_NewRef (items [oparg ]));
28172817 }
28182818 Py_DECREF (seq );
2819+ JUMPBY (INLINE_CACHE_ENTRIES_UNPACK_SEQUENCE );
28192820 NOTRACE_DISPATCH ();
28202821 }
28212822
@@ -5600,7 +5601,7 @@ MISS_WITH_CACHE(CALL)
56005601MISS_WITH_INLINE_CACHE (BINARY_OP )
56015602MISS_WITH_CACHE (COMPARE_OP )
56025603MISS_WITH_CACHE (BINARY_SUBSCR )
5603- MISS_WITH_CACHE (UNPACK_SEQUENCE )
5604+ MISS_WITH_INLINE_CACHE (UNPACK_SEQUENCE )
56045605MISS_WITH_OPARG_COUNTER (STORE_SUBSCR )
56055606
56065607LOAD_ATTR_INSTANCE_VALUE_miss :
0 commit comments