Skip to content

Commit 43d8a3d

Browse files
committed
Add some new asserts to specialized math
1 parent a082766 commit 43d8a3d

File tree

3 files changed

+48
-0
lines changed

3 files changed

+48
-0
lines changed

Python/bytecodes.c

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Python/executor_cases.c.h

Lines changed: 16 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Python/generated_cases.c.h

Lines changed: 16 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)