summaryrefslogtreecommitdiff
path: root/Python/ceval.c
Commit message (Collapse)AuthorAgeFilesLines
...
* | Issue #27129: Replaced wordcode related magic constants with macros.Serhiy Storchaka2016-09-111-27/+21
| |
* | DTrace support: function calls, GC activity, line executionŁukasz Langa2016-09-091-2/+76
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Tested on macOS 10.11 dtrace, Ubuntu 16.04 SystemTap, and libbcc. Largely based by an initial patch by Jesús Cea Avión, with some influence from Dave Malcolm's SystemTap patch and Nikhil Benesch's unification patch. Things deliberately left out for simplicity: - ustack helpers, I have no way of testing them at this point since they are Solaris-specific - PyFrameObject * in function__entry/function__return, this is SystemTap-specific - SPARC support - dynamic tracing - sys module dtrace facility introspection All of those might be added later.
* | remove more READ_TIMESTAMPBenjamin Peterson2016-09-091-12/+0
| |
* | remove READ_TIMESTAMP macroBenjamin Peterson2016-09-091-3/+0
| |
* | remove ceval timestamp supportBenjamin Peterson2016-09-091-153/+1
| |
* | Issue #27810: Add _PyCFunction_FastCallKeywords()Victor Stinner2016-09-091-136/+28
| | | | | | | | | | Use _PyCFunction_FastCallKeywords() in ceval.c: it allows to remove a lot of code from ceval.c which was only used to call C functions.
* | Add _PyObject_FastCallKeywords()Victor Stinner2016-09-091-53/+36
| | | | | | | | | | | | | | | | | | | | Issue #27830: Add _PyObject_FastCallKeywords(): avoid the creation of a temporary dictionary for keyword arguments. Other changes: * Cleanup call_function() and fast_function() (ex: rename nk to nkwargs) * Remove now useless do_call(), replaced with _PyObject_FastCallKeywords()
* | Rework CALL_FUNCTION* opcodesVictor Stinner2016-09-091-287/+205
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Issue #27213: Rework CALL_FUNCTION* opcodes to produce shorter and more efficient bytecode: * CALL_FUNCTION now only accepts position arguments * CALL_FUNCTION_KW accepts position arguments and keyword arguments, but keys of keyword arguments are packed into a constant tuple. * CALL_FUNCTION_EX is the most generic, it expects a tuple and a dict for positional and keyword arguments. CALL_FUNCTION_VAR and CALL_FUNCTION_VAR_KW opcodes have been removed. 2 tests of test_traceback are currently broken: skip test, the issue #28050 was created to track the issue. Patch by Demur Rumed, design by Serhiy Storchaka, reviewed by Serhiy Storchaka and Victor Stinner.
* | ceval: tighten the code of STORE_ANNOTATIONYury Selivanov2016-09-081-2/+1
| |
* | Issue #28003: Implement PEP 525 -- Asynchronous Generators.Yury Selivanov2016-09-081-29/+83
| |
* | Issue #27985: Implement PEP 526 -- Syntax for Variable Annotations.Yury Selivanov2016-09-081-0/+112
| | | | | | | | Patch by Ivan Levkivskyi.
* | MergeRaymond Hettinger2016-09-081-2/+4
| |
* | Add the co_extra field and accompanying APIs to code objects.Brett Cannon2016-09-071-0/+14
| | | | | | | | This completes PEP 523.
* | Issue #27078: Added BUILD_STRING opcode. Optimized f-strings evaluation.Serhiy Storchaka2016-09-061-0/+18
| |
* | Implement the frame evaluation API aspect of PEP 523.Brett Cannon2016-09-051-0/+7
| |
* | Issue #27895: Spelling fixes (Contributed by Ville Skyttä).Raymond Hettinger2016-08-301-6/+6
| |
* | Issue #27830: Revert, remove _PyFunction_FastCallKeywords()Victor Stinner2016-08-251-6/+6
| |
* | Add _PyObject_FastCallKeywords()Victor Stinner2016-08-251-9/+14
| | | | | | | | | | | | Issue #27830: Similar to _PyObject_FastCallDict(), but keyword arguments are also passed in the same C array than positional arguments, rather than being passed as a Python dict.
* | Use Py_ssize_t type for number of argumentsVictor Stinner2016-08-251-83/+114
| | | | | | | | | | Issue #27848: use Py_ssize_t rather than C int for the number of function positional and keyword arguments.
* | PyEval_CallObjectWithKeywords() doesn't inc/decrefVictor Stinner2016-08-231-7/+1
| | | | | | | | | | | | Issue #27809: PyEval_CallObjectWithKeywords() doesn't increment temporary the reference counter of the args tuple (positional arguments). The caller already holds a strong reference to it.
* | PyEval_CallObjectWithKeywords() uses fast call with kwargsVictor Stinner2016-08-221-12/+4
| | | | | | | | | | Issue #27809. _PyObject_FastCallDict() now supports keyword arguments, and so the args==NULL fast-path can also be used when kwargs is not NULL.
* | Issue #27809: Cleanup _PyEval_EvalCodeWithName()Victor Stinner2016-08-221-15/+13
| | | | | | | | | | * Rename nm to name * PEP 7: add { ... } to if/else blocks
* | _PyFunction_FastCallDict() supports keyword argsVictor Stinner2016-08-221-9/+41
| | | | | | | | | | | | | | | | Issue #27809: * Rename _PyFunction_FastCall() to _PyFunction_FastCallDict() * Rename _PyCFunction_FastCall() to _PyCFunction_FastCallDict() * _PyFunction_FastCallDict() now supports keyword arguments
* | Rename _PyObject_FastCall() to _PyObject_FastCallDict()Victor Stinner2016-08-221-2/+2
| | | | | | | | | | | | | | | | Issue #27809: * Rename _PyObject_FastCall() function to _PyObject_FastCallDict() * Add _PyObject_FastCall(), _PyObject_CallNoArg() and _PyObject_CallArg1() macros calling _PyObject_FastCallDict()
* | Optimize call to Python function without argumentVictor Stinner2016-08-221-11/+31
| | | | | | | | | | | | Issue #27128. When a Python function is called with no arguments, but all parameters have a default value: use default values as arguments for the fast path.
* | import_name() now uses fast callVictor Stinner2016-08-201-13/+9
| | | | | | | | | | Issue #27128: import_name() now calls _PyObject_FastCall() to avoid the creation of a temporary tuple.
* | Fix PyObject_Call() parameter namesVictor Stinner2016-08-191-12/+13
| | | | | | | | | | | | Issue #27128: arg=>args, kw=>kwargs. Same change for PyEval_CallObjectWithKeywords().
* | PyEval_CallObjectWithKeywords() uses fast callVictor Stinner2016-08-191-0/+4
| | | | | | | | | | | | Issue #27128: Modify PyEval_CallObjectWithKeywords() to use _PyObject_FastCall() when args==NULL and kw==NULL. It avoids the creation of a temporary empty tuple for positional arguments.
* | Add _PyObject_FastCall()Victor Stinner2016-08-191-46/+113
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Issue #27128: Add _PyObject_FastCall(), a new calling convention avoiding a temporary tuple to pass positional parameters in most cases, but create a temporary tuple if needed (ex: for the tp_call slot). The API is prepared to support keyword parameters, but the full implementation will come later (_PyFunction_FastCall() doesn't support keyword parameters yet). Add also: * _PyStack_AsTuple() helper function: convert a "stack" of parameters to a tuple. * _PyCFunction_FastCall(): fast call implementation for C functions * _PyFunction_FastCall(): fast call implementation for Python functions
* | Merge 3.5 (fix raise)Victor Stinner2016-08-181-1/+1
|\ \ | |/
| * Fix SystemError in "raise" statementVictor Stinner2016-08-181-1/+1
| | | | | | | | | | | | | | | | Issue #27558: Fix a SystemError in the implementation of "raise" statement. In a brand new thread, raise a RuntimeError since there is no active exception to reraise. Patch written by Xiang Zhang.
* | Use Py_ssize_t in _PyEval_EvalCodeWithName()Victor Stinner2016-08-161-8/+10
| | | | | | | | | | | | | | | | Issue #27128, #18295: replace int type with Py_ssize_t for index variables used for positional arguments. It should help to avoid integer overflow and help to emit better machine code for "i++" (no trap needed for overflow). Make also the total_args variable constant.
* | Issue #27128: Cleanup _PyEval_EvalCodeWithName()Victor Stinner2016-08-161-11/+43
| | | | | | | | | | | | | | | | * Add comments * Add empty lines for readability * PEP 7 style for if block * Remove useless assert(globals != NULL); (globals is tested a few lines before)
* | Issue #22557: Now importing already imported modules is up to 2.5 times faster.Serhiy Storchaka2016-08-021-28/+51
| |
* | Issue #16191: Merge comment fixes from 3.5Martin Panter2016-07-181-6/+6
|\ \ | |/
| * Issue #16191: Fix up references to renamed variablesMartin Panter2016-07-181-6/+6
| |
* | Issue #27352: Correct the validation of the ImportFrom AST node and simplifySerhiy Storchaka2016-06-271-9/+1
| | | | | | | | the implementation of the IMPORT_NAME opcode.
* | Issue #27255: Added more predictions in ceval.c.Serhiy Storchaka2016-06-271-2/+12
| |
* | Issue #27095: Simplified MAKE_FUNCTION and removed MAKE_CLOSURE opcodes.Serhiy Storchaka2016-06-121-102/+22
| | | | | | | | Patch by Demur Rumed.
* | Issue #27140: Added BUILD_CONST_KEY_MAP opcode.Serhiy Storchaka2016-06-121-0/+33
| |
* | Merge 3.5 (issue #27243)Yury Selivanov2016-06-091-2/+38
|\ \ | |/
| * Issue #27243: Fix __aiter__ protocolYury Selivanov2016-06-091-2/+38
| |
* | Fixed the use of _Py_IS_ALIGNED (issue #27097).Serhiy Storchaka2016-05-251-1/+1
| |
* | Issue #27097: Python interpreter is now about 7% faster due to optimizedSerhiy Storchaka2016-05-251-29/+45
| | | | | | | | instruction decoding. Based on patch by Demur Rumed.
* | Issue #26647: Python interpreter now uses 16-bit wordcode instead of bytecode.Serhiy Storchaka2016-05-241-74/+57
| | | | | | | | Patch by Demur Rumed.
* | merge 3.5 (#26991)Benjamin Peterson2016-05-161-1/+3
|\ \ | |/
| * fix possible refleak in MAKE_FUNCTION (closes #26991)Benjamin Peterson2016-05-161-1/+3
| | | | | | | | Patch by Xiang Zhang.
* | Issue #18531: Single var-keyword argument of dict subtype was passedSerhiy Storchaka2016-05-081-1/+1
| | | | | | | | unscathed to the C-defined function. Now it is converted to exact dict.
* | Issue #26802: Optimized calling a function with *args only positional arguments.Serhiy Storchaka2016-04-191-0/+15
| | | | | | | | Patch by Joe Jevnik.
* | Issue #26200: Added Py_SETREF and replaced Py_XSETREF with Py_SETREFSerhiy Storchaka2016-04-101-2/+2
|\ \ | |/ | | | | in places where Py_DECREF was used.