@@ -403,7 +403,7 @@ PyTypeObject _PyUOpExecutor_Type = {
403
403
PyVarObject_HEAD_INIT (& PyType_Type , 0 )
404
404
.tp_name = "uop_executor" ,
405
405
.tp_basicsize = sizeof (_PyUOpExecutorObject ) - sizeof (_PyUOpInstruction ),
406
- .tp_itemsize = sizeof (_PyUOpInstruction ) + sizeof (uintptr_t ),
406
+ .tp_itemsize = sizeof (_PyUOpInstruction ) + sizeof (uint16_t ) + sizeof ( _PyExecutorObject * ),
407
407
.tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_DISALLOW_INSTANTIATION ,
408
408
.tp_dealloc = (destructor )uop_dealloc ,
409
409
.tp_as_sequence = & uop_as_sequence ,
@@ -835,8 +835,10 @@ make_executor_from_uops(_PyUOpInstruction *buffer, _PyBloomFilter *dependencies)
835
835
if (executor == NULL ) {
836
836
return NULL ;
837
837
}
838
- executor -> extra = (uintptr_t * )(executor -> trace + length );
839
- memset (executor -> extra , 0 , sizeof (uintptr_t ) * length );
838
+ executor -> counters = (uint16_t * )(& executor -> trace [length ]);
839
+ memset (executor -> counters , 0 , sizeof (uint16_t ) * length );
840
+ executor -> executors = (_PyExecutorObject * * )(& executor -> counters [length ]);
841
+ memset (executor -> executors , 0 , sizeof (_PyExecutorObject * ) * length );
840
842
int dest = length - 1 ;
841
843
/* Scan backwards, so that we see the destinations of jumps before the jumps themselves. */
842
844
for (int i = _Py_UOP_MAX_TRACE_LENGTH - 1 ; i >= 0 ; i -- ) {
0 commit comments