@@ -272,7 +272,6 @@ dummy_func(
272272
273273 inst (LOAD_FAST_AND_CLEAR , (-- value )) {
274274 value = GETLOCAL (oparg );
275- // do not use SETLOCAL here, it decrefs the old value
276275 GETLOCAL (oparg ) = PyStackRef_NULL ;
277276 }
278277
@@ -328,8 +327,10 @@ dummy_func(
328327 }
329328
330329 replicate (8 ) inst (STORE_FAST , (value -- )) {
331- SETLOCAL (oparg , value );
330+ _PyStackRef tmp = GETLOCAL (oparg );
331+ GETLOCAL (oparg ) = value ;
332332 DEAD (value );
333+ PyStackRef_XCLOSE (tmp );
333334 }
334335
335336 pseudo (STORE_FAST_MAYBE_NULL , (unused -- )) = {
@@ -339,18 +340,24 @@ dummy_func(
339340 inst (STORE_FAST_LOAD_FAST , (value1 -- value2 )) {
340341 uint32_t oparg1 = oparg >> 4 ;
341342 uint32_t oparg2 = oparg & 15 ;
342- SETLOCAL (oparg1 , value1 );
343+ _PyStackRef tmp = GETLOCAL (oparg1 );
344+ GETLOCAL (oparg1 ) = value1 ;
343345 DEAD (value1 );
344346 value2 = PyStackRef_DUP (GETLOCAL (oparg2 ));
347+ PyStackRef_XCLOSE (tmp );
345348 }
346349
347350 inst (STORE_FAST_STORE_FAST , (value2 , value1 -- )) {
348351 uint32_t oparg1 = oparg >> 4 ;
349352 uint32_t oparg2 = oparg & 15 ;
350- SETLOCAL (oparg1 , value1 );
353+ _PyStackRef tmp = GETLOCAL (oparg1 );
354+ GETLOCAL (oparg1 ) = value1 ;
351355 DEAD (value1 );
352- SETLOCAL (oparg2 , value2 );
356+ PyStackRef_XCLOSE (tmp );
357+ tmp = GETLOCAL (oparg2 );
358+ GETLOCAL (oparg2 ) = value2 ;
353359 DEAD (value2 );
360+ PyStackRef_XCLOSE (tmp );
354361 }
355362
356363 pure inst (POP_TOP , (value -- )) {
@@ -1775,7 +1782,9 @@ dummy_func(
17751782 );
17761783 ERROR_IF (1 , error );
17771784 }
1778- SETLOCAL (oparg , PyStackRef_NULL );
1785+ _PyStackRef tmp = GETLOCAL (oparg );
1786+ GETLOCAL (oparg ) = PyStackRef_NULL ;
1787+ PyStackRef_XCLOSE (tmp );
17791788 }
17801789
17811790 inst (MAKE_CELL , (-- )) {
@@ -1786,7 +1795,9 @@ dummy_func(
17861795 if (cell == NULL ) {
17871796 ERROR_NO_POP ();
17881797 }
1789- SETLOCAL (oparg , PyStackRef_FromPyObjectSteal (cell ));
1798+ _PyStackRef tmp = GETLOCAL (oparg );
1799+ GETLOCAL (oparg ) = PyStackRef_FromPyObjectSteal (cell );
1800+ PyStackRef_XCLOSE (tmp );
17901801 }
17911802
17921803 inst (DELETE_DEREF , (-- )) {
0 commit comments