@@ -310,7 +310,7 @@ _Py_ClearExecutorDeletionList(PyInterpreterState *interp)
310310 while (ts ) {
311311 _PyExecutorObject * current = (_PyExecutorObject * )ts -> current_executor ;
312312 if (current != NULL ) {
313- _Py_DECREF_NO_DEALLOC ((PyObject * )current );
313+ Py_DECREF ((PyObject * )current );
314314 }
315315 ts = ts -> next ;
316316 }
@@ -320,6 +320,10 @@ _Py_ClearExecutorDeletionList(PyInterpreterState *interp)
320320static void
321321add_to_pending_deletion_list (_PyExecutorObject * self )
322322{
323+ if (self -> vm_data .pending_deletion ) {
324+ return ;
325+ }
326+ self -> vm_data .pending_deletion = 1 ;
323327 PyInterpreterState * interp = PyInterpreterState_Get ();
324328 self -> vm_data .links .previous = NULL ;
325329 self -> vm_data .links .next = interp -> executor_deletion_list_head ;
@@ -627,7 +631,7 @@ _PyJit_translate_single_bytecode_to_trace(
627631 uint32_t target = 0 ;
628632
629633 target = Py_IsNone ((PyObject * )old_code )
630- ? (int )(target_instr - _Py_INTERPRETER_TRAMPOLINE_INSTRUCTIONS_PTR )
634+ ? (uint32_t )(target_instr - _Py_INTERPRETER_TRAMPOLINE_INSTRUCTIONS_PTR )
631635 : INSTR_IP (target_instr , old_code );
632636
633637 // Rewind EXTENDED_ARG so that we see the whole thing.
@@ -1666,6 +1670,7 @@ void
16661670_Py_ExecutorInit (_PyExecutorObject * executor , const _PyBloomFilter * dependency_set )
16671671{
16681672 executor -> vm_data .valid = true;
1673+ executor -> vm_data .pending_deletion = 0 ;
16691674 for (int i = 0 ; i < _Py_BLOOM_FILTER_WORDS ; i ++ ) {
16701675 executor -> vm_data .bloom .bits [i ] = dependency_set -> bits [i ];
16711676 }
0 commit comments