@@ -511,6 +511,8 @@ dummy_func(
511511 pure op (_BINARY_OP_MULTIPLY_INT , (left , right -- res )) {
512512 PyObject * left_o = PyStackRef_AsPyObjectBorrow (left );
513513 PyObject * right_o = PyStackRef_AsPyObjectBorrow (right );
514+ assert (PyLong_CheckExact (left_o ));
515+ assert (PyLong_CheckExact (right_o ));
514516
515517 STAT_INC (BINARY_OP , hit );
516518 PyObject * res_o = _PyLong_Multiply ((PyLongObject * )left_o , (PyLongObject * )right_o );
@@ -524,6 +526,8 @@ dummy_func(
524526 pure op (_BINARY_OP_ADD_INT , (left , right -- res )) {
525527 PyObject * left_o = PyStackRef_AsPyObjectBorrow (left );
526528 PyObject * right_o = PyStackRef_AsPyObjectBorrow (right );
529+ assert (PyLong_CheckExact (left_o ));
530+ assert (PyLong_CheckExact (right_o ));
527531
528532 STAT_INC (BINARY_OP , hit );
529533 PyObject * res_o = _PyLong_Add ((PyLongObject * )left_o , (PyLongObject * )right_o );
@@ -537,6 +541,8 @@ dummy_func(
537541 pure op (_BINARY_OP_SUBTRACT_INT , (left , right -- res )) {
538542 PyObject * left_o = PyStackRef_AsPyObjectBorrow (left );
539543 PyObject * right_o = PyStackRef_AsPyObjectBorrow (right );
544+ assert (PyLong_CheckExact (left_o ));
545+ assert (PyLong_CheckExact (right_o ));
540546
541547 STAT_INC (BINARY_OP , hit );
542548 PyObject * res_o = _PyLong_Subtract ((PyLongObject * )left_o , (PyLongObject * )right_o );
@@ -574,6 +580,8 @@ dummy_func(
574580 pure op (_BINARY_OP_MULTIPLY_FLOAT , (left , right -- res )) {
575581 PyObject * left_o = PyStackRef_AsPyObjectBorrow (left );
576582 PyObject * right_o = PyStackRef_AsPyObjectBorrow (right );
583+ assert (PyFloat_CheckExact (left_o ));
584+ assert (PyFloat_CheckExact (right_o ));
577585
578586 STAT_INC (BINARY_OP , hit );
579587 double dres =
@@ -588,6 +596,8 @@ dummy_func(
588596 pure op (_BINARY_OP_ADD_FLOAT , (left , right -- res )) {
589597 PyObject * left_o = PyStackRef_AsPyObjectBorrow (left );
590598 PyObject * right_o = PyStackRef_AsPyObjectBorrow (right );
599+ assert (PyFloat_CheckExact (left_o ));
600+ assert (PyFloat_CheckExact (right_o ));
591601
592602 STAT_INC (BINARY_OP , hit );
593603 double dres =
@@ -602,6 +612,8 @@ dummy_func(
602612 pure op (_BINARY_OP_SUBTRACT_FLOAT , (left , right -- res )) {
603613 PyObject * left_o = PyStackRef_AsPyObjectBorrow (left );
604614 PyObject * right_o = PyStackRef_AsPyObjectBorrow (right );
615+ assert (PyFloat_CheckExact (left_o ));
616+ assert (PyFloat_CheckExact (right_o ));
605617
606618 STAT_INC (BINARY_OP , hit );
607619 double dres =
@@ -631,6 +643,8 @@ dummy_func(
631643 pure op (_BINARY_OP_ADD_UNICODE , (left , right -- res )) {
632644 PyObject * left_o = PyStackRef_AsPyObjectBorrow (left );
633645 PyObject * right_o = PyStackRef_AsPyObjectBorrow (right );
646+ assert (PyUnicode_CheckExact (left_o ));
647+ assert (PyUnicode_CheckExact (right_o ));
634648
635649 STAT_INC (BINARY_OP , hit );
636650 PyObject * res_o = PyUnicode_Concat (left_o , right_o );
@@ -653,6 +667,8 @@ dummy_func(
653667 op (_BINARY_OP_INPLACE_ADD_UNICODE , (left , right -- )) {
654668 PyObject * left_o = PyStackRef_AsPyObjectBorrow (left );
655669 PyObject * right_o = PyStackRef_AsPyObjectBorrow (right );
670+ assert (PyUnicode_CheckExact (left_o ));
671+ assert (PyUnicode_CheckExact (right_o ));
656672
657673 int next_oparg ;
658674 #if TIER_ONE
0 commit comments