Optimize _PyCFunction_FastCallKeywords()

Issue #29259: Write fast path in _PyCFunction_FastCallKeywords() for
METH_FASTCALL, avoid the creation of a temporary dictionary for keyword
arguments.

Cleanup also _PyCFunction_FastCallDict():

* Don't dereference func before checking that it's not NULL
* Move code to raise the "no keyword argument" exception into a new
  no_keyword_error label.

Update python-gdb.py for the change.
This commit is contained in:
Victor Stinner 2017-01-16 17:18:53 +01:00
parent 15f94596b6
commit 7fc252adfb
2 changed files with 134 additions and 38 deletions

View file

@ -1518,7 +1518,8 @@ class Frame(object):
except RuntimeError:
return 'PyCFunction invocation (unable to read "func")'
elif caller == '_PyCFunction_FastCallDict':
elif caller in {'_PyCFunction_FastCallDict',
'_PyCFunction_FastCallKeywords'}:
try:
func = older._gdbframe.read_var('func_obj')
return str(func)