@@ -2224,28 +2224,31 @@ LONG_FLOAT_ACTION(compactlong_float_true_div, /)
22242224
22252225static _PyBinaryOpSpecializationDescr binaryop_extend_descrs [ ] = {
22262226 /* long-long arithmetic */
2227- {NB_OR , compactlongs_guard , compactlongs_or , & PyLong_Type },
2228- {NB_AND , compactlongs_guard , compactlongs_and , & PyLong_Type },
2229- {NB_XOR , compactlongs_guard , compactlongs_xor , & PyLong_Type },
2230- {NB_INPLACE_OR , compactlongs_guard , compactlongs_or , & PyLong_Type },
2231- {NB_INPLACE_AND , compactlongs_guard , compactlongs_and , & PyLong_Type },
2232- {NB_INPLACE_XOR , compactlongs_guard , compactlongs_xor , & PyLong_Type },
2227+ {NB_OR , compactlongs_guard , compactlongs_or , & PyLong_Type , 1 },
2228+ {NB_AND , compactlongs_guard , compactlongs_and , & PyLong_Type , 1 },
2229+ {NB_XOR , compactlongs_guard , compactlongs_xor , & PyLong_Type , 1 },
2230+ {NB_INPLACE_OR , compactlongs_guard , compactlongs_or , & PyLong_Type , 1 },
2231+ {NB_INPLACE_AND , compactlongs_guard , compactlongs_and , & PyLong_Type , 1 },
2232+ {NB_INPLACE_XOR , compactlongs_guard , compactlongs_xor , & PyLong_Type , 1 },
22332233
22342234 /* float-long arithemetic */
2235- {NB_ADD , float_compactlong_guard , float_compactlong_add , & PyFloat_Type },
2236- {NB_SUBTRACT , float_compactlong_guard , float_compactlong_subtract , & PyFloat_Type },
2237- {NB_TRUE_DIVIDE , nonzero_float_compactlong_guard , float_compactlong_true_div , & PyFloat_Type },
2238- {NB_MULTIPLY , float_compactlong_guard , float_compactlong_multiply , & PyFloat_Type },
2239-
2240- /* float-float arithmetic */
2241- {NB_ADD , compactlong_float_guard , compactlong_float_add , & PyFloat_Type },
2242- {NB_SUBTRACT , compactlong_float_guard , compactlong_float_subtract , & PyFloat_Type },
2243- {NB_TRUE_DIVIDE , nonzero_compactlong_float_guard , compactlong_float_true_div , & PyFloat_Type },
2244- {NB_MULTIPLY , compactlong_float_guard , compactlong_float_multiply , & PyFloat_Type },
2245-
2246- /* list-list and tuple-tuple concatenation */
2247- {NB_ADD , list_list_guard , list_list_add , & PyList_Type },
2248- {NB_ADD , tuple_tuple_guard , tuple_tuple_add , & PyTuple_Type },
2235+ {NB_ADD , float_compactlong_guard , float_compactlong_add , & PyFloat_Type , 1 },
2236+ {NB_SUBTRACT , float_compactlong_guard , float_compactlong_subtract , & PyFloat_Type , 1 },
2237+ {NB_TRUE_DIVIDE , nonzero_float_compactlong_guard , float_compactlong_true_div , & PyFloat_Type , 1 },
2238+ {NB_MULTIPLY , float_compactlong_guard , float_compactlong_multiply , & PyFloat_Type , 1 },
2239+
2240+ /* long-float arithmetic */
2241+ {NB_ADD , compactlong_float_guard , compactlong_float_add , & PyFloat_Type , 1 },
2242+ {NB_SUBTRACT , compactlong_float_guard , compactlong_float_subtract , & PyFloat_Type , 1 },
2243+ {NB_TRUE_DIVIDE , nonzero_compactlong_float_guard , compactlong_float_true_div , & PyFloat_Type , 1 },
2244+ {NB_MULTIPLY , compactlong_float_guard , compactlong_float_multiply , & PyFloat_Type , 1 },
2245+
2246+ /* list-list concatenation: _PyList_Concat always allocates a new list */
2247+ {NB_ADD , list_list_guard , list_list_add , & PyList_Type , 1 },
2248+ /* tuple-tuple concatenation: _PyTuple_Concat has a zero-length shortcut
2249+ that can return one of the operands, so the result is not guaranteed
2250+ to be a freshly allocated object. */
2251+ {NB_ADD , tuple_tuple_guard , tuple_tuple_add , & PyTuple_Type , 0 },
22492252};
22502253
22512254static int
0 commit comments