summaryrefslogtreecommitdiffstats
path: root/Python/bytecodes.c
diff options
context:
space:
mode:
authorMark Shannon <mark@hotpy.org>2024-07-25 17:32:43 (GMT)
committerGitHub <noreply@github.com>2024-07-25 17:32:43 (GMT)
commit5e686ff57d6bc2fd8c675bd2c59a064be6da2839 (patch)
treec792148ac53c8d5df02058e6ec3015f2367093be /Python/bytecodes.c
parentaef95eb107fef9355c66461612aedd31265f8c21 (diff)
downloadcpython-5e686ff57d6bc2fd8c675bd2c59a064be6da2839.zip
cpython-5e686ff57d6bc2fd8c675bd2c59a064be6da2839.tar.gz
cpython-5e686ff57d6bc2fd8c675bd2c59a064be6da2839.tar.bz2
GH-122034: Add StackRef variants of type checks to reduce the number of PyStackRef_AsPyObjectBorrow calls (GH-122037)
Diffstat (limited to 'Python/bytecodes.c')
-rw-r--r--Python/bytecodes.c20
1 files changed, 10 insertions, 10 deletions
diff --git a/Python/bytecodes.c b/Python/bytecodes.c
index be6b443..b161fc0 100644
--- a/Python/bytecodes.c
+++ b/Python/bytecodes.c
@@ -286,7 +286,7 @@ dummy_func(
tier1 inst(INSTRUMENTED_END_FOR, (receiver, value -- receiver)) {
/* Need to create a fake StopIteration error here,
* to conform to PEP 380 */
- if (PyGen_Check(PyStackRef_AsPyObjectBorrow(receiver))) {
+ if (PyStackRef_GenCheck(receiver)) {
if (monitor_stop_iteration(tstate, frame, this_instr, PyStackRef_AsPyObjectBorrow(value))) {
ERROR_NO_POP();
}
@@ -317,7 +317,7 @@ dummy_func(
}
pure inst(UNARY_NOT, (value -- res)) {
- assert(PyBool_Check(PyStackRef_AsPyObjectBorrow(value)));
+ assert(PyStackRef_BoolCheck(value));
res = PyStackRef_Is(value, PyStackRef_False)
? PyStackRef_True : PyStackRef_False;
}
@@ -353,7 +353,7 @@ dummy_func(
macro(TO_BOOL) = _SPECIALIZE_TO_BOOL + unused/2 + _TO_BOOL;
inst(TO_BOOL_BOOL, (unused/1, unused/2, value -- value)) {
- EXIT_IF(!PyBool_Check(PyStackRef_AsPyObjectBorrow(value)));
+ EXIT_IF(!PyStackRef_BoolCheck(value));
STAT_INC(TO_BOOL, hit);
}
@@ -2688,7 +2688,7 @@ dummy_func(
}
replaced op(_POP_JUMP_IF_FALSE, (cond -- )) {
- assert(PyBool_Check(PyStackRef_AsPyObjectBorrow(cond)));
+ assert(PyStackRef_BoolCheck(cond));
int flag = PyStackRef_Is(cond, PyStackRef_False);
#if ENABLE_SPECIALIZATION
this_instr[1].cache = (this_instr[1].cache << 1) | flag;
@@ -2697,7 +2697,7 @@ dummy_func(
}
replaced op(_POP_JUMP_IF_TRUE, (cond -- )) {
- assert(PyBool_Check(PyStackRef_AsPyObjectBorrow(cond)));
+ assert(PyStackRef_BoolCheck(cond));
int flag = PyStackRef_Is(cond, PyStackRef_True);
#if ENABLE_SPECIALIZATION
this_instr[1].cache = (this_instr[1].cache << 1) | flag;
@@ -3121,7 +3121,7 @@ dummy_func(
else {
Py_DECREF(tb);
}
- assert(PyLong_Check(PyStackRef_AsPyObjectBorrow(lasti)));
+ assert(PyStackRef_LongCheck(lasti));
(void)lasti; // Shut up compiler warning if asserts are off
PyObject *stack[5] = {NULL, PyStackRef_AsPyObjectBorrow(exit_self), exc, val_o, tb};
int has_self = !PyStackRef_IsNull(exit_self);
@@ -3163,7 +3163,7 @@ dummy_func(
else {
prev_exc = PyStackRef_None;
}
- assert(PyExceptionInstance_Check(PyStackRef_AsPyObjectBorrow(new_exc)));
+ assert(PyStackRef_ExceptionInstanceCheck(new_exc));
exc_info->exc_value = PyStackRef_AsPyObjectNew(new_exc);
}
@@ -3459,7 +3459,7 @@ dummy_func(
assert(Py_TYPE(callable_o) == &PyMethod_Type);
self = PyStackRef_FromPyObjectNew(((PyMethodObject *)callable_o)->im_self);
method = PyStackRef_FromPyObjectNew(((PyMethodObject *)callable_o)->im_func);
- assert(PyFunction_Check(PyStackRef_AsPyObjectBorrow(method)));
+ assert(PyStackRef_FunctionCheck(method));
PyStackRef_CLOSE(callable);
}
@@ -4467,7 +4467,7 @@ dummy_func(
inst(INSTRUMENTED_POP_JUMP_IF_TRUE, (unused/1 -- )) {
_PyStackRef cond = POP();
- assert(PyBool_Check(PyStackRef_AsPyObjectBorrow(cond)));
+ assert(PyStackRef_BoolCheck(cond));
int flag = PyStackRef_Is(cond, PyStackRef_True);
int offset = flag * oparg;
#if ENABLE_SPECIALIZATION
@@ -4478,7 +4478,7 @@ dummy_func(
inst(INSTRUMENTED_POP_JUMP_IF_FALSE, (unused/1 -- )) {
_PyStackRef cond = POP();
- assert(PyBool_Check(PyStackRef_AsPyObjectBorrow(cond)));
+ assert(PyStackRef_BoolCheck(cond));
int flag = PyStackRef_Is(cond, PyStackRef_False);
int offset = flag * oparg;
#if ENABLE_SPECIALIZATION