| Commit message (Collapse) | Author | Age | Files | Lines |
|\ |
|
| |\
| | |
| | |
| | | |
PyErr_SyntaxLocationEx() and PyErr_SyntaxLocationObject().
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Replace
_PyObject_CallArg1(func, arg)
with
PyObject_CallFunctionObjArgs(func, arg, NULL)
Using the _PyObject_CallArg1() macro increases the usage of the C stack, which
was unexpected and unwanted. PyObject_CallFunctionObjArgs() doesn't have this
issue.
|
| | |
| | |
| | |
| | | |
functions.
|
| | |\
| | | |
| | | |
| | | |
| | | |
| | | | |
The latter function is more readable, faster and doesn't raise exceptions.
Based on patch by Xiang Zhang.
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
When Python is not compiled with PGO, the performance of Python on call_simple
and call_method microbenchmarks depend highly on the code placement. In the
worst case, the performance slowdown can be up to 70%.
The GCC __attribute__((hot)) attribute helps to keep hot code close to reduce
the risk of such major slowdown. This attribute is ignored when Python is
compiled with PGO.
The following functions are considered as hot according to statistics collected
by perf record/perf report:
* _PyEval_EvalFrameDefault()
* call_function()
* _PyFunction_FastCall()
* PyFrame_New()
* frame_dealloc()
* PyErr_Occurred()
|
| | | |
| | | |
| | | |
| | | |
| | | | |
It seems like _PyThreadState_UncheckedGet() is not inlined as expected, even
when using gcc -O3.
|
|\ \ \ \
| |/ / /
|/| | | |
|
| | | |
| | | |
| | | |
| | | | |
Based on patch by Michael Layzell.
|
|\ \ \ \
| |/ / /
|/| / /
| |/ / |
PyErr_SyntaxLocationEx() and PyErr_SyntaxLocationObject().
|
| |\ \
| | |/
| | |
| | |
| | |
| | | |
The latter function is more readable, faster and doesn't raise exceptions.
Based on patch by Xiang Zhang.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
new exception with setting current exception as __cause__.
_PyErr_FormatFromCause(exception, format, args...) is equivalent to Python
raise exception(format % args) from sys.exc_info()[1]
|
| | |\
| | | |
| | | |
| | | | |
_PyErr_ChainExceptions().
|
| | | | |
|
| | | | |
|
| | | |
| | | |
| | | |
| | | |
| | | | |
Issue #27809: Helper function optimized to create an exception: use fastcall
whenever possible.
|
|/ / /
| | |
| | |
| | | |
PyErr_SyntaxLocationEx() and PyErr_SyntaxLocationObject().
|
|/ /
| |
| |
| |
| |
| | |
The latter function is more readable, faster and doesn't raise exceptions.
Based on patch by Xiang Zhang.
|
|/
|
|
| |
_PyErr_ChainExceptions().
|
|
|
|
| |
Patch by Ofer Schwarz.
|
|
|
|
| |
in places where Py_DECREF was used.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Issue #26154: Add a new private _PyThreadState_UncheckedGet() function which
gets the current thread state, but don't call Py_FatalError() if it is NULL.
Python 3.5.1 removed the _PyThreadState_Current symbol from the Python C API to
no more expose complex and private atomic types. Atomic types depends on the
compiler or can even depend on compiler options. The new function
_PyThreadState_UncheckedGet() allows to get the variable value without having
to care of the exact implementation of atomic types.
Changes:
* Replace direct usage of the _PyThreadState_Current variable with a call to
_PyThreadState_UncheckedGet().
* In pystate.c, replace direct usage of the _PyThreadState_Current variable
with the PyThreadState_GET() macro for readability.
* Document also PyThreadState_Get() in pystate.h
|
|
|
|
|
| |
This patch is manually crafted and contains changes that couldn't be handled
automatically.
|
| |
|
|\
| |
| |
| | |
Patch by Martin Panter.
|
| |
| |
| |
| | |
Patch by Martin Panter.
|
| |
| |
| |
| |
| | |
current exception because they can run arbitrary Python code and so no
exception must be set.
|
| |
| |
| |
| |
| | |
* If fopen() fails, OSError is raised with the original filename object.
* The GIL is now released while calling fopen()
|
|\ \
| |/
| |
| | |
_PyErr_ChainExceptions() function.
|
| |
| |
| |
| | |
_PyErr_ChainExceptions() function.
|
|/
|
|
| |
but accepting a `va_list` argument.
|
| |
|
|
|
|
|
|
| |
now register both filenames in the exception on failure.
This required adding new C API functions allowing OSError exceptions
to reference two filenames instead of one.
|
|
|
|
|
|
|
| |
are used.
Move also _Py_IDENTIFIER() defintions to the top in modified files to remove
identifiers duplicated in the same file.
|
|
|
|
|
|
|
| |
_PyUnicode_CompareWithId() is faster than PyUnicode_CompareWithASCIIString()
when both strings are equal and interned.
Add also _PyId_builtins identifier for "builtins" common string.
|
|
|
|
|
|
|
| |
instead of creating temporary Unicode string objects
Add also more identifiers in pythonrun.c to avoid temporary Unicode string
objets for the interactive interpreter.
|
| |
|
| |
|
|
|
|
|
| |
are now created non-inheritable; add functions os.get/set_inheritable(),
os.get/set_handle_inheritable() and socket.socket.get/set_inheritable().
|
|
|
|
| |
filenames anymore on Windows.
|
|
|
|
|
|
|
|
| |
* Catch PyFile_WriteString() and PyFile_WriteObject() errors
* Clear the current exception on _PyObject_GetAttrId() failure
* Use PyUnicode_CompareWithASCIIString() and PyFile_WriteObject() instead of
_PyUnicode_AsString() and strcmp() to avoid Unicode encoding error. stderr
has a more tolerant error handler than utf-8/strict.
|
|
|
|
| |
before PyExc_MemoryError has been initialized by _PyExc_Init()
|
|
|
|
|
|
|
|
|
|
|
|
| |
with an assertion error if they are called with an exception set
(PyErr_Occurred()).
If these functions are called with an exception set, the exception may be
cleared and so the caller looses its exception.
Add also assertions to PyEval_CallObjectWithKeywords() and call_function() to
check if the function succeed with no exception set, or the function failed
with an exception set.
|
| |
|
|
|
|
|
|
| |
failure
PyObject_IsSubclass() can fail and raise a new exception!
|
|
|
|
| |
fails with an assertion error
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Forgot to raise ModuleNotFoundError when None is found in sys.modules.
This led to introducing the C function PyErr_SetImportErrorSubclass()
to make setting ModuleNotFoundError easier.
Also updated the reference docs to mention ModuleNotFoundError
appropriately. Updated the docs for ModuleNotFoundError to mention the
None in sys.modules case.
Lastly, it was noticed that PyErr_SetImportError() was not setting an
exception when returning None in one case. That issue is now fixed.
|