• Jeremy Hylton's avatar
    Revised implementation of CALL_FUNCTION and friends. · 5282044b
    Jeremy Hylton yazdı
    More revision still needed.
    
    Much of the code that was in the mainloop was moved to a series of
    helper functions.  PyEval_CallObjectWithKeywords was split into two
    parts.  The first part now only does argument handling.  The second
    part is now named call_object and delegates the call to a
    call_(function,method,etc.) helper.
    
    XXX The call_XXX helper functions should be replaced with tp_call
    functions for the respective types.
    
    The CALL_FUNCTION implementation contains three kinds of optimization:
    1. fast_cfunction and fast_function are called when the arguments on
       the stack can be passed directly to eval_code2() without copying
       them into a tuple.
    2. PyCFunction objects are dispatched immediately, because they are
       presumed to occur more often than anything else.
    3. Bound methods are dispatched inline.  The method object contains a
       pointer to the function object that will be called.  The function
       is called from within the mainloop, which may allow optimization #1
       to be used, too.
    
    The extened call implementation -- f(*args) and f(**kw) -- are
    implemented as a separate case in the mainloop.  This allows the
    common case of normal function calls to execute without wasting time
    on checks for extended calls, although it does introduce a small
    amount of code duplication.
    
    Also, the unused final argument of eval_code2() was removed.  This is
    probably the last trace of the access statement :-).
    5282044b
Adı
Son kayıt (commit)
Son güncelleme
BeOS Loading commit data...
Demo Loading commit data...
Doc Loading commit data...
Grammar Loading commit data...
Include Loading commit data...
Lib Loading commit data...
Mac Loading commit data...
Misc Loading commit data...
Modules Loading commit data...
Objects Loading commit data...
PC Loading commit data...
PCbuild Loading commit data...
Parser Loading commit data...
Python Loading commit data...
Tools Loading commit data...
.cvsignore Loading commit data...
.hgtags Loading commit data...
LICENSE Loading commit data...
Makefile.in Loading commit data...
README Loading commit data...
acconfig.h Loading commit data...
config.h.in Loading commit data...
configure Loading commit data...
configure.in Loading commit data...
install-sh Loading commit data...