@@ -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