@@ -384,8 +384,7 @@ dummy_func(
384384                if  (!_PyErr_Occurred (tstate )) {
385385                    _PyErr_SetKeyError (sub );
386386                }
387-                 Py_DECREF (dict );
388-                 Py_DECREF (sub );
387+                 DECREF_INPUTS ();
389388                ERROR_IF (true, error );
390389            }
391390            Py_INCREF (res );  // Do this before DECREF'ing dict, sub 
@@ -420,7 +419,7 @@ dummy_func(
420419
421420        inst (SET_ADD , (set , unused [oparg - 1 ], v  --  set , unused [oparg - 1 ])) {
422421            int  err  =  PySet_Add (set , v );
423-             Py_DECREF ( v );
422+             DECREF_INPUTS ( );
424423            ERROR_IF (err , error );
425424            PREDICT (JUMP_BACKWARD );
426425        }
@@ -899,7 +898,7 @@ dummy_func(
899898            #endif   /* ENABLE_SPECIALIZATION */ 
900899            PyObject  * * top  =  stack_pointer  +  oparg  -  1 ;
901900            int  res  =  unpack_iterable (tstate , seq , oparg , -1 , top );
902-             Py_DECREF ( seq );
901+             DECREF_INPUTS ( );
903902            ERROR_IF (res  ==  0 , error );
904903        }
905904
@@ -910,7 +909,7 @@ dummy_func(
910909            STAT_INC (UNPACK_SEQUENCE , hit );
911910            values [0 ] =  Py_NewRef (PyTuple_GET_ITEM (seq , 1 ));
912911            values [1 ] =  Py_NewRef (PyTuple_GET_ITEM (seq , 0 ));
913-             Py_DECREF ( seq );
912+             DECREF_INPUTS ( );
914913        }
915914
916915        inst (UNPACK_SEQUENCE_TUPLE , (unused /1 , seq  --  values [oparg ])) {
@@ -921,7 +920,7 @@ dummy_func(
921920            for  (int  i  =  oparg ; -- i  >= 0 ; ) {
922921                * values ++  =  Py_NewRef (items [i ]);
923922            }
924-             Py_DECREF ( seq );
923+             DECREF_INPUTS ( );
925924        }
926925
927926        inst (UNPACK_SEQUENCE_LIST , (unused /1 , seq  --  values [oparg ])) {
@@ -932,14 +931,14 @@ dummy_func(
932931            for  (int  i  =  oparg ; -- i  >= 0 ; ) {
933932                * values ++  =  Py_NewRef (items [i ]);
934933            }
935-             Py_DECREF ( seq );
934+             DECREF_INPUTS ( );
936935        }
937936
938937        inst (UNPACK_EX , (seq  --  unused [oparg  &  0xFF ], unused , unused [oparg  >> 8 ])) {
939938            int  totalargs  =  1  +  (oparg  &  0xFF ) +  (oparg  >> 8 );
940939            PyObject  * * top  =  stack_pointer  +  totalargs  -  1 ;
941940            int  res  =  unpack_iterable (tstate , seq , oparg  &  0xFF , oparg  >> 8 , top );
942-             Py_DECREF ( seq );
941+             DECREF_INPUTS ( );
943942            ERROR_IF (res  ==  0 , error );
944943        }
945944
@@ -967,22 +966,21 @@ dummy_func(
967966            #endif   /* ENABLE_SPECIALIZATION */ 
968967            PyObject  * name  =  GETITEM (frame -> f_code -> co_names , oparg );
969968            int  err  =  PyObject_SetAttr (owner , name , v );
970-             Py_DECREF (v );
971-             Py_DECREF (owner );
969+             DECREF_INPUTS ();
972970            ERROR_IF (err , error );
973971        }
974972
975973        inst (DELETE_ATTR , (owner  -- )) {
976974            PyObject  * name  =  GETITEM (frame -> f_code -> co_names , oparg );
977975            int  err  =  PyObject_SetAttr (owner , name , (PyObject  * )NULL );
978-             Py_DECREF ( owner );
976+             DECREF_INPUTS ( );
979977            ERROR_IF (err , error );
980978        }
981979
982980        inst (STORE_GLOBAL , (v  -- )) {
983981            PyObject  * name  =  GETITEM (frame -> f_code -> co_names , oparg );
984982            int  err  =  PyDict_SetItem (GLOBALS (), name , v );
985-             Py_DECREF ( v );
983+             DECREF_INPUTS ( );
986984            ERROR_IF (err , error );
987985        }
988986
@@ -1249,9 +1247,7 @@ dummy_func(
12491247
12501248        inst (BUILD_STRING , (pieces [oparg ] --  str )) {
12511249            str  =  _PyUnicode_JoinArray (& _Py_STR (empty ), pieces , oparg );
1252-             for  (int  i  =  0 ; i  <  oparg ; i ++ ) {
1253-                 Py_DECREF (pieces [i ]);
1254-             }
1250+             DECREF_INPUTS ();
12551251            ERROR_IF (str  ==  NULL , error );
12561252        }
12571253
@@ -1314,10 +1310,7 @@ dummy_func(
13141310            if  (map  ==  NULL )
13151311                goto error ;
13161312
1317-             for  (int  i  =  0 ; i  <  oparg ; i ++ ) {
1318-                 Py_DECREF (values [i * 2 ]);
1319-                 Py_DECREF (values [i * 2 + 1 ]);
1320-             }
1313+             DECREF_INPUTS ();
13211314            ERROR_IF (map  ==  NULL , error );
13221315        }
13231316
@@ -1373,10 +1366,7 @@ dummy_func(
13731366            map  =  _PyDict_FromItems (
13741367                    & PyTuple_GET_ITEM (keys , 0 ), 1 ,
13751368                    values , 1 , oparg );
1376-             Py_DECREF (keys );
1377-             for  (int  i  =  0 ; i  <  oparg ; i ++ ) {
1378-                 Py_DECREF (values [i ]);
1379-             }
1369+             DECREF_INPUTS ();
13801370            ERROR_IF (map  ==  NULL , error );
13811371        }
13821372
@@ -1464,7 +1454,7 @@ dummy_func(
14641454
14651455                       NULL | meth | arg1 | ... | argN 
14661456                    */ 
1467-                     Py_DECREF ( owner );
1457+                     DECREF_INPUTS ( );
14681458                    ERROR_IF (meth  ==  NULL , error );
14691459                    res2  =  NULL ;
14701460                    res  =  meth ;
@@ -1473,7 +1463,7 @@ dummy_func(
14731463            else  {
14741464                /* Classic, pushes one value. */ 
14751465                res  =  PyObject_GetAttr (owner , name );
1476-                 Py_DECREF ( owner );
1466+                 DECREF_INPUTS ( );
14771467                ERROR_IF (res  ==  NULL , error );
14781468            }
14791469        }
@@ -1492,7 +1482,7 @@ dummy_func(
14921482            STAT_INC (LOAD_ATTR , hit );
14931483            Py_INCREF (res );
14941484            res2  =  NULL ;
1495-             Py_DECREF ( owner );
1485+             DECREF_INPUTS ( );
14961486        }
14971487
14981488        inst (LOAD_ATTR_MODULE , (unused /1 , type_version /2 , index /1 , unused /5 , owner  --  res2  if  (oparg  &  1 ), res )) {
@@ -1509,7 +1499,7 @@ dummy_func(
15091499            STAT_INC (LOAD_ATTR , hit );
15101500            Py_INCREF (res );
15111501            res2  =  NULL ;
1512-             Py_DECREF ( owner );
1502+             DECREF_INPUTS ( );
15131503        }
15141504
15151505        inst (LOAD_ATTR_WITH_HINT , (unused /1 , type_version /2 , index /1 , unused /5 , owner  --  res2  if  (oparg  &  1 ), res )) {
@@ -1540,7 +1530,7 @@ dummy_func(
15401530            STAT_INC (LOAD_ATTR , hit );
15411531            Py_INCREF (res );
15421532            res2  =  NULL ;
1543-             Py_DECREF ( owner );
1533+             DECREF_INPUTS ( );
15441534        }
15451535
15461536        inst (LOAD_ATTR_SLOT , (unused /1 , type_version /2 , index /1 , unused /5 , owner  --  res2  if  (oparg  &  1 ), res )) {
@@ -1554,7 +1544,7 @@ dummy_func(
15541544            STAT_INC (LOAD_ATTR , hit );
15551545            Py_INCREF (res );
15561546            res2  =  NULL ;
1557-             Py_DECREF ( owner );
1547+             DECREF_INPUTS ( );
15581548        }
15591549
15601550        inst (LOAD_ATTR_CLASS , (unused /1 , type_version /2 , unused /2 , descr /4 , cls  --  res2  if  (oparg  &  1 ), res )) {
@@ -1570,7 +1560,7 @@ dummy_func(
15701560            res  =  descr ;
15711561            assert (res  !=  NULL );
15721562            Py_INCREF (res );
1573-             Py_DECREF ( cls );
1563+             DECREF_INPUTS ( );
15741564        }
15751565
15761566        inst (LOAD_ATTR_PROPERTY , (unused /1 , type_version /2 , func_version /2 , fget /4 , owner  --  unused  if  (oparg  &  1 ), unused )) {
@@ -1707,8 +1697,7 @@ dummy_func(
17071697            STAT_INC (COMPARE_OP , deferred );
17081698            assert ((oparg  >> 4 ) <= Py_GE );
17091699            res  =  PyObject_RichCompare (left , right , oparg >>4 );
1710-             Py_DECREF (left );
1711-             Py_DECREF (right );
1700+             DECREF_INPUTS ();
17121701            ERROR_IF (res  ==  NULL , error );
17131702        }
17141703
@@ -1734,8 +1723,7 @@ dummy_func(
17341723            #endif   /* ENABLE_SPECIALIZATION */ 
17351724            assert ((oparg  >> 4 ) <= Py_GE );
17361725            PyObject  * cond  =  PyObject_RichCompare (left , right , oparg >>4 );
1737-             Py_DECREF (left );
1738-             Py_DECREF (right );
1726+             DECREF_INPUTS ();
17391727            ERROR_IF (cond  ==  NULL , error );
17401728            assert (next_instr [1 ].op .code  ==  POP_JUMP_IF_FALSE  || 
17411729                   next_instr [1 ].op .code  ==  POP_JUMP_IF_TRUE );
@@ -1885,7 +1873,7 @@ dummy_func(
18851873            }
18861874            else  {
18871875                int  err  =  PyObject_IsTrue (cond );
1888-                 Py_DECREF ( cond );
1876+                 DECREF_INPUTS ( );
18891877                if  (err  ==  0 ) {
18901878                    JUMPBY (oparg );
18911879                }
@@ -1905,7 +1893,7 @@ dummy_func(
19051893            }
19061894            else  {
19071895                int  err  =  PyObject_IsTrue (cond );
1908-                 Py_DECREF ( cond );
1896+                 DECREF_INPUTS ( );
19091897                if  (err  >  0 ) {
19101898                    JUMPBY (oparg );
19111899                }
@@ -1917,7 +1905,7 @@ dummy_func(
19171905
19181906        inst (POP_JUMP_IF_NOT_NONE , (value  --  )) {
19191907            if  (!Py_IsNone (value )) {
1920-                 Py_DECREF ( value );
1908+                 DECREF_INPUTS ( );
19211909                JUMPBY (oparg );
19221910            }
19231911            else  {
@@ -1931,7 +1919,7 @@ dummy_func(
19311919                JUMPBY (oparg );
19321920            }
19331921            else  {
1934-                 Py_DECREF ( value );
1922+                 DECREF_INPUTS ( );
19351923            }
19361924        }
19371925
@@ -2065,7 +2053,7 @@ dummy_func(
20652053                if  (iter  ==  NULL ) {
20662054                    goto error ;
20672055                }
2068-                 Py_DECREF ( iterable );
2056+                 DECREF_INPUTS ( );
20692057            }
20702058            PREDICT (LOAD_CONST );
20712059        }
@@ -2940,9 +2928,7 @@ dummy_func(
29402928            assert (PyTuple_CheckExact (callargs ));
29412929
29422930            result  =  do_call_core (tstate , func , callargs , kwargs , cframe .use_tracing );
2943-             Py_DECREF (func );
2944-             Py_DECREF (callargs );
2945-             Py_XDECREF (kwargs );
2931+             DECREF_INPUTS ();
29462932
29472933            assert (PEEK (3  +  (oparg  &  1 )) ==  NULL );
29482934            ERROR_IF (result  ==  NULL , error );
@@ -3009,9 +2995,7 @@ dummy_func(
30092995
30102996        inst (BUILD_SLICE , (start , stop , step  if  (oparg  ==  3 ) --  slice )) {
30112997            slice  =  PySlice_New (start , stop , step );
3012-             Py_DECREF (start );
3013-             Py_DECREF (stop );
3014-             Py_XDECREF (step );
2998+             DECREF_INPUTS ();
30152999            ERROR_IF (slice  ==  NULL , error );
30163000        }
30173001
@@ -3057,8 +3041,7 @@ dummy_func(
30573041            } else  {
30583042                /* Actually call format(). */ 
30593043                result  =  PyObject_Format (value , fmt_spec );
3060-                 Py_DECREF (value );
3061-                 Py_XDECREF (fmt_spec );
3044+                 DECREF_INPUTS ();
30623045                ERROR_IF (result  ==  NULL , error );
30633046            }
30643047        }
@@ -3084,8 +3067,7 @@ dummy_func(
30843067            assert ((unsigned )oparg  <  Py_ARRAY_LENGTH (binary_ops ));
30853068            assert (binary_ops [oparg ]);
30863069            res  =  binary_ops [oparg ](lhs , rhs );
3087-             Py_DECREF (lhs );
3088-             Py_DECREF (rhs );
3070+             DECREF_INPUTS ();
30893071            ERROR_IF (res  ==  NULL , error );
30903072        }
30913073
0 commit comments