gh-131798: JIT: Optimize _CHECK_IS_NOT_PY_CALLABLE_EX and _CHECK_IS_NOT_PY_CALLABLE_KW (GH-148494)

This commit is contained in:
Wulian233 2026-04-13 22:41:06 +08:00 committed by GitHub
parent 88e378cc1c
commit afaf58b573
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 55 additions and 0 deletions

View file

@ -1320,6 +1320,20 @@ dummy_func(void) {
}
}
op(_CHECK_IS_NOT_PY_CALLABLE_EX, (func_st, unused, unused, unused -- func_st, unused, unused, unused)) {
PyTypeObject *type = sym_get_type(func_st);
if (type && type != &PyFunction_Type) {
ADD_OP(_NOP, 0, 0);
}
}
op(_CHECK_IS_NOT_PY_CALLABLE_KW, (callable, unused, unused[oparg], unused -- callable, unused, unused[oparg], unused)) {
PyTypeObject *type = sym_get_type(callable);
if (type && type != &PyFunction_Type && type != &PyMethod_Type) {
ADD_OP(_NOP, 0, 0);
}
}
op(_PUSH_FRAME, (new_frame -- )) {
SYNC_SP();
if (!CURRENT_FRAME_IS_INIT_SHIM()) {

View file

@ -4672,6 +4672,12 @@
}
case _CHECK_IS_NOT_PY_CALLABLE_KW: {
JitOptRef callable;
callable = stack_pointer[-3 - oparg];
PyTypeObject *type = sym_get_type(callable);
if (type && type != &PyFunction_Type && type != &PyMethod_Type) {
ADD_OP(_NOP, 0, 0);
}
break;
}
@ -4708,6 +4714,12 @@
}
case _CHECK_IS_NOT_PY_CALLABLE_EX: {
JitOptRef func_st;
func_st = stack_pointer[-4];
PyTypeObject *type = sym_get_type(func_st);
if (type && type != &PyFunction_Type) {
ADD_OP(_NOP, 0, 0);
}
break;
}