summaryrefslogtreecommitdiffstats
path: root/Python/executor_cases.c.h
diff options
context:
space:
mode:
authorMark Shannon <mark@hotpy.org>2024-04-22 12:34:06 (GMT)
committerGitHub <noreply@github.com>2024-04-22 12:34:06 (GMT)
commita6647d16abf4dd65997865e857371673238e60bf (patch)
treeb4ebfbfb86f0962d766f09d3d54513a9b38b0669 /Python/executor_cases.c.h
parentceb6038b053c403bed3ca3a8bd17b7e3fc9aab7d (diff)
downloadcpython-a6647d16abf4dd65997865e857371673238e60bf.zip
cpython-a6647d16abf4dd65997865e857371673238e60bf.tar.gz
cpython-a6647d16abf4dd65997865e857371673238e60bf.tar.bz2
GH-115480: Reduce guard strength for binary ops when type of one operand is known already (GH-118050)
Diffstat (limited to 'Python/executor_cases.c.h')
-rw-r--r--Python/executor_cases.c.h40
1 files changed, 40 insertions, 0 deletions
diff --git a/Python/executor_cases.c.h b/Python/executor_cases.c.h
index 841ce8c..43b0221 100644
--- a/Python/executor_cases.c.h
+++ b/Python/executor_cases.c.h
@@ -447,6 +447,26 @@
break;
}
+ case _GUARD_NOS_INT: {
+ PyObject *left;
+ left = stack_pointer[-2];
+ if (!PyLong_CheckExact(left)) {
+ UOP_STAT_INC(uopcode, miss);
+ JUMP_TO_JUMP_TARGET();
+ }
+ break;
+ }
+
+ case _GUARD_TOS_INT: {
+ PyObject *value;
+ value = stack_pointer[-1];
+ if (!PyLong_CheckExact(value)) {
+ UOP_STAT_INC(uopcode, miss);
+ JUMP_TO_JUMP_TARGET();
+ }
+ break;
+ }
+
case _BINARY_OP_MULTIPLY_INT: {
PyObject *right;
PyObject *left;
@@ -511,6 +531,26 @@
break;
}
+ case _GUARD_NOS_FLOAT: {
+ PyObject *left;
+ left = stack_pointer[-2];
+ if (!PyFloat_CheckExact(left)) {
+ UOP_STAT_INC(uopcode, miss);
+ JUMP_TO_JUMP_TARGET();
+ }
+ break;
+ }
+
+ case _GUARD_TOS_FLOAT: {
+ PyObject *value;
+ value = stack_pointer[-1];
+ if (!PyFloat_CheckExact(value)) {
+ UOP_STAT_INC(uopcode, miss);
+ JUMP_TO_JUMP_TARGET();
+ }
+ break;
+ }
+
case _BINARY_OP_MULTIPLY_FLOAT: {
PyObject *right;
PyObject *left;