@@ -2417,31 +2417,30 @@ binary_op_fail_kind(int oparg, PyObject *lhs, PyObject *rhs)
24172417/* long-long */
24182418
24192419static inline int
2420- is_nonnegative_compactlong (PyObject * v )
2420+ is_compactlong (PyObject * v )
24212421{
24222422 return PyLong_CheckExact (v ) &&
2423- (!_PyLong_IsNegative ((PyLongObject * )v )) &&
24242423 _PyLong_IsCompact ((PyLongObject * )v );
24252424}
24262425
24272426static int
2428- nonnegative_compactlongs_guard (PyObject * lhs , PyObject * rhs )
2427+ compactlongs_guard (PyObject * lhs , PyObject * rhs )
24292428{
2430- return (is_nonnegative_compactlong (lhs ) && is_nonnegative_compactlong (rhs ));
2429+ return (is_compactlong (lhs ) && is_compactlong (rhs ));
24312430}
24322431
2433- #define NONNEGATIVE_LONGS_ACTION (NAME , OP ) \
2432+ #define BITWISE_LONGS_ACTION (NAME , OP ) \
24342433 static PyObject * \
24352434 (NAME)(PyObject *lhs, PyObject *rhs) \
24362435 { \
24372436 Py_ssize_t rhs_val = _PyLong_CompactValue((PyLongObject *)rhs); \
24382437 Py_ssize_t lhs_val = _PyLong_CompactValue((PyLongObject *)lhs); \
24392438 return PyLong_FromLong(lhs_val OP rhs_val); \
24402439 }
2441- NONNEGATIVE_LONGS_ACTION ( nonnegative_compactlongs_or , |)
2442- NONNEGATIVE_LONGS_ACTION ( nonnegative_compactlongs_and , & )
2443- NONNEGATIVE_LONGS_ACTION ( nonnegative_compactlongs_xor , ^)
2444- #undef NONNEGATIVE_LONGS_ACTION
2440+ BITWISE_LONGS_ACTION ( compactlongs_or , |)
2441+ BITWISE_LONGS_ACTION ( compactlongs_and , & )
2442+ BITWISE_LONGS_ACTION ( compactlongs_xor , ^)
2443+ #undef BITWISE_LONGS_ACTION
24452444
24462445/* float-long */
24472446
@@ -2495,10 +2494,10 @@ LONG_FLOAT_ACTION(compactlong_float_multiply, *)
24952494LONG_FLOAT_ACTION (compactlong_float_true_div , /)
24962495#undef LONG_FLOAT_ACTION
24972496
2498- static _PyBinaryOpSpecializationDescr nonnegative_compactlongs_specs [NB_OPARG_LAST + 1 ] = {
2499- [NB_OR ] = {nonnegative_compactlongs_guard , nonnegative_compactlongs_or },
2500- [NB_AND ] = {nonnegative_compactlongs_guard , nonnegative_compactlongs_and },
2501- [NB_XOR ] = {nonnegative_compactlongs_guard , nonnegative_compactlongs_xor },
2497+ static _PyBinaryOpSpecializationDescr compactlongs_specs [NB_OPARG_LAST + 1 ] = {
2498+ [NB_OR ] = {compactlongs_guard , compactlongs_or },
2499+ [NB_AND ] = {compactlongs_guard , compactlongs_and },
2500+ [NB_XOR ] = {compactlongs_guard , compactlongs_xor },
25022501};
25032502
25042503static _PyBinaryOpSpecializationDescr float_compactlong_specs [NB_OPARG_LAST + 1 ] = {
@@ -2529,7 +2528,7 @@ binary_op_extended_specialization(PyObject *lhs, PyObject *rhs, int oparg,
25292528
25302529 LOOKUP_SPEC (compactlong_float_specs , oparg );
25312530 LOOKUP_SPEC (float_compactlong_specs , oparg );
2532- LOOKUP_SPEC (nonnegative_compactlongs_specs , oparg );
2531+ LOOKUP_SPEC (compactlongs_specs , oparg );
25332532#undef LOOKUP_SPEC
25342533 return 0 ;
25352534}
0 commit comments