gh-99761: Add `_PyLong_IsPositiveSingleDigit` function to check for s… · python/cpython@2b82c36

GitHub

@@ -391,8 +391,7 @@ dummy_func(

391391DEOPT_IF(!PyList_CheckExact(list), BINARY_SUBSCR);

392392393393// Deopt unless 0 <= sub < PyList_Size(list)

394-Py_ssize_tsigned_magnitude=Py_SIZE(sub);

395-DEOPT_IF(((size_t)signed_magnitude) >1, BINARY_SUBSCR);

394+DEOPT_IF(!_PyLong_IsPositiveSingleDigit(sub), BINARY_SUBSCR);

396395assert(((PyLongObject*)_PyLong_GetZero())->ob_digit[0] ==0);

397396Py_ssize_tindex= ((PyLongObject*)sub)->ob_digit[0];

398397DEOPT_IF(index >= PyList_GET_SIZE(list), BINARY_SUBSCR);

@@ -410,8 +409,7 @@ dummy_func(

410409DEOPT_IF(!PyTuple_CheckExact(tuple), BINARY_SUBSCR);

411410412411// Deopt unless 0 <= sub < PyTuple_Size(list)

413-Py_ssize_tsigned_magnitude=Py_SIZE(sub);

414-DEOPT_IF(((size_t)signed_magnitude) >1, BINARY_SUBSCR);

412+DEOPT_IF(!_PyLong_IsPositiveSingleDigit(sub), BINARY_SUBSCR);

415413assert(((PyLongObject*)_PyLong_GetZero())->ob_digit[0] ==0);

416414Py_ssize_tindex= ((PyLongObject*)sub)->ob_digit[0];

417415DEOPT_IF(index >= PyTuple_GET_SIZE(tuple), BINARY_SUBSCR);

@@ -508,7 +506,7 @@ dummy_func(

508506DEOPT_IF(!PyList_CheckExact(list), STORE_SUBSCR);

509507510508// Ensure nonnegative, zero-or-one-digit ints.

511-DEOPT_IF(((size_t)Py_SIZE(sub)) >1, STORE_SUBSCR);

509+DEOPT_IF(!_PyLong_IsPositiveSingleDigit(sub), STORE_SUBSCR);

512510Py_ssize_tindex= ((PyLongObject*)sub)->ob_digit[0];

513511// Ensure index < len(list)

514512DEOPT_IF(index >= PyList_GET_SIZE(list), STORE_SUBSCR);