The SPEC_FAIL_KIND is not displayed correctly due to not being adequately maintained.
e.g
|
#ifdef Py_STATS |
|
static int |
|
builtin_call_fail_kind(int ml_flags) |
|
{ |
|
switch (ml_flags & (METH_VARARGS | METH_FASTCALL | METH_NOARGS | METH_O | |
|
METH_KEYWORDS | METH_METHOD)) { |
|
case METH_VARARGS: |
|
return SPEC_FAIL_CALL_PYCFUNCTION; |
|
case METH_VARARGS | METH_KEYWORDS: |
|
return SPEC_FAIL_CALL_PYCFUNCTION_WITH_KEYWORDS; |
|
case METH_FASTCALL | METH_KEYWORDS: |
|
return SPEC_FAIL_CALL_PYCFUNCTION_FAST_WITH_KEYWORDS; |
According to the context, METH_FASTCALL | METH_KEYWORDS flag does not cause specialization failure.
However, the method descr fail kind will also be shown as SPEC_FAIL_CALL_PYCFUNCTION, because builtin_call_fail_kind function is called incorrectly in the specialize_method_descriptor function.
I'd like to submit a PR to fix them and make them display correctly.
Linked PRs
The
SPEC_FAIL_KINDis not displayed correctly due to not being adequately maintained.e.g
cpython/Python/specialize.c
Lines 1471 to 1482 in b1dcdef
According to the context,
METH_FASTCALL | METH_KEYWORDSflag does not cause specialization failure.However, the
method descrfail kind will also be shown asSPEC_FAIL_CALL_PYCFUNCTION, becausebuiltin_call_fail_kindfunction is called incorrectly in thespecialize_method_descriptorfunction.I'd like to submit a PR to fix them and make them display correctly.
Linked PRs