Commit Graph

6110 Commits

Author SHA1 Message Date
Victor Stinner 8be1c39eb3 Backed out changeset 7efddbf1aa70 2016-11-30 12:10:54 +01:00
Victor Stinner ebea9988e0 Uniformize argument names of "call" functions
* Callable object: callable, o, callable_object => func
* Object for method calls: o => obj
* Method name: name or nameid => method

Cleanup also the C code:

* Don't initialize variables to NULL if they are not used before their first
  assignement
* Add braces for readability
2016-11-29 18:47:56 +01:00
Serhiy Storchaka baa7223bcd Issue #28797: Modifying the class __dict__ inside the __set_name__ method of
a descriptor that is used inside that class no longer prevents calling the
 __set_name__ method of other descriptors.
2016-11-29 09:56:07 +02:00
Serhiy Storchaka 9ec07721f4 Issue #28797: Modifying the class __dict__ inside the __set_name__ method of
a descriptor that is used inside that class no longer prevents calling the
 __set_name__ method of other descriptors.
2016-11-29 09:54:17 +02:00
Victor Stinner ed6de7345e Merge 3.6 2016-11-24 22:33:49 +01:00
Victor Stinner f7d199ff32 Fix _PyGen_yf()
Issue #28782: Fix a bug in the implementation ``yield from`` when checking
if the next instruction is YIELD_FROM. Regression introduced by WORDCODE
(issue #26647).

Reviewed by Serhiy Storchaka and Yury Selivanov.
2016-11-24 22:33:01 +01:00
Serhiy Storchaka 99250d5c63 Issue #28774: Simplified encoding a str result of an error handler in ASCII
and Latin1 encoders.
2016-11-23 15:13:00 +02:00
Xiang Zhang d04d8474df Issue #28774: Fix start/end pos in unicode_encode_ucs1().
Fix error position of the unicode error in ASCII and Latin1
encoders when a string returned by the error handler contains multiple
non-encodable characters (non-ASCII for the ASCII codec, characters out
of the U+0000-U+00FF range for Latin1).
2016-11-23 19:34:01 +08:00
INADA Naoki 2c5a830f2a Issue #28731: Optimize _PyDict_NewPresized() to create correct size dict.
Improve speed of dict literal with constant keys up to 30%.
2016-12-07 18:34:44 +09:00
Serhiy Storchaka 007d7ff73f Issue #28761: The fields name and doc of structures PyMemberDef, PyGetSetDef,
PyStructSequence_Field, PyStructSequence_Desc, and wrapperbase are now of
type "const char *" rather of "char *".
2016-11-22 07:58:08 +02:00
INADA Naoki 92c50eee52 Issue #28731: Optimize _PyDict_NewPresized() to create correct size dict
Improve speed of dict literal with constant keys up to 30%.
2016-11-22 00:57:02 +09:00
Serhiy Storchaka 50911476f5 Issue #28760: Clean up and fix comments in PyUnicode_AsUnicodeEscapeString().
Patch by Xiang Zhang.
2016-11-21 11:47:16 +02:00
Serhiy Storchaka ac0720eaa4 Issue #28760: Clean up and fix comments in PyUnicode_AsUnicodeEscapeString().
Patch by Xiang Zhang.
2016-11-21 11:46:51 +02:00
Serhiy Storchaka b57d9eac41 Issue #28748: Private variable _Py_PackageContext is now of type "const char *"
rather of "char *".
2016-11-21 10:25:54 +02:00
Serhiy Storchaka 460bd0d284 Issue #19569: Compiler warnings are now emitted if use most of deprecated
functions.
2016-11-20 12:16:46 +02:00
Serhiy Storchaka 85b0f5beb1 Added the const qualifier to char* variables that refer to readonly internal
UTF-8 represenatation of Unicode objects.
2016-11-20 10:16:47 +02:00
Serhiy Storchaka a98c4a984b Replaced outdated macros _PyUnicode_AsString and _PyUnicode_AsStringAndSize
with PyUnicode_AsUTF8 and PyUnicode_AsUTF8AndSize.
2016-11-20 09:13:40 +02:00
Serhiy Storchaka 06515833fe Replaced outdated macros _PyUnicode_AsString and _PyUnicode_AsStringAndSize
with PyUnicode_AsUTF8 and PyUnicode_AsUTF8AndSize.
2016-11-20 09:13:07 +02:00
Yury Selivanov bb2356500c Merge 3.6 (issue #28721) 2016-11-16 18:16:32 -05:00
Yury Selivanov 41782e4970 Issue #28721: Fix asynchronous generators aclose() and athrow() 2016-11-16 18:16:17 -05:00
Serhiy Storchaka 27b74244fb Issue #28701: _PyUnicode_EqualToASCIIId and _PyUnicode_EqualToASCIIString now
require ASCII right argument and assert this condition in debug build.
2016-11-16 20:03:03 +02:00
Serhiy Storchaka a83a6a3275 Issue #28701: _PyUnicode_EqualToASCIIId and _PyUnicode_EqualToASCIIString now
require ASCII right argument and assert this condition in debug build.
2016-11-16 20:02:44 +02:00
Serhiy Storchaka e6d6131f78 Fixed an off-by-one error in _PyUnicode_EqualToASCIIString (issue #28701). 2016-11-16 16:13:13 +02:00
Serhiy Storchaka df66b9c425 Fixed an off-by-one error in _PyUnicode_EqualToASCIIString (issue #28701). 2016-11-16 16:12:56 +02:00
Serhiy Storchaka 292dd1b2ad Fixed an off-by-one error in _PyUnicode_EqualToASCIIString (issue #28701). 2016-11-16 16:12:34 +02:00
Serhiy Storchaka 503db266a5 Issue #21449: Removed private function _PyUnicode_CompareWithId. 2016-11-16 15:56:50 +02:00
Serhiy Storchaka dddec81b2d Issue #21449: Removed private function _PyUnicode_CompareWithId. 2016-11-16 15:56:27 +02:00
Serhiy Storchaka 29a5447360 Issue #28701: Replace _PyUnicode_CompareWithId with _PyUnicode_EqualToASCIIId.
The latter function is more readable, faster and doesn't raise exceptions.

Based on patch by Xiang Zhang.
2016-11-16 15:41:31 +02:00
Serhiy Storchaka fab6acd9f5 Issue #28701: Replace _PyUnicode_CompareWithId with _PyUnicode_EqualToASCIIId.
The latter function is more readable, faster and doesn't raise exceptions.

Based on patch by Xiang Zhang.
2016-11-16 15:41:11 +02:00
Serhiy Storchaka f5894dd646 Issue #28701: Replace _PyUnicode_CompareWithId with _PyUnicode_EqualToASCIIId.
The latter function is more readable, faster and doesn't raise exceptions.

Based on patch by Xiang Zhang.
2016-11-16 15:40:39 +02:00
Serhiy Storchaka 1a73bf365e Issue #28701: Replace PyUnicode_CompareWithASCIIString with _PyUnicode_EqualToASCIIString.
The latter function is more readable, faster and doesn't raise exceptions.
2016-11-16 10:19:57 +02:00
Serhiy Storchaka 3b73ea1278 Issue #28701: Replace PyUnicode_CompareWithASCIIString with _PyUnicode_EqualToASCIIString.
The latter function is more readable, faster and doesn't raise exceptions.
2016-11-16 10:19:20 +02:00
Serhiy Storchaka f4934ea77d Issue #28701: Replace PyUnicode_CompareWithASCIIString with _PyUnicode_EqualToASCIIString.
The latter function is more readable, faster and doesn't raise exceptions.
2016-11-16 10:17:58 +02:00
Victor Stinner c7a8f67411 Issue #28618: Mark dict lookup functions as hot
It's common to see these functions in the top 3 of "perf report".
2016-11-15 15:13:40 +01:00
Serhiy Storchaka 616034eb73 Issue #28648: Fixed crash in Py_DecodeLocale() in debug build on Mac OS X
when decode astral characters.
2016-11-12 14:37:11 +02:00
Serhiy Storchaka babe4f8e5e Issue #28648: Fixed crash in Py_DecodeLocale() in debug build on Mac OS X
when decode astral characters.
2016-11-12 14:36:02 +02:00
Serhiy Storchaka 6b4b6e956e Issue #28648: Fixed crash in Py_DecodeLocale() in debug build on Mac OS X
when decode astral characters.
2016-11-12 14:35:46 +02:00
Serhiy Storchaka 84293aff9f Issue #28648: Fixed crash in Py_DecodeLocale() in debug build on Mac OS X
when decode astral characters.
2016-11-12 14:29:48 +02:00
Serhiy Storchaka b626643734 Issue #28648: Fixed crash in Py_DecodeLocale() in debug build on Mac OS X
when decode astral characters.
2016-11-12 14:28:06 +02:00
Victor Stinner c6944e7edc Issue #28618: Make hot functions using __attribute__((hot))
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()
2016-11-11 02:13:35 +01:00
Victor Stinner 0cae609847 Use PyThreadState_GET() in performance critical code
It seems like _PyThreadState_UncheckedGet() is not inlined as expected, even
when using gcc -O3.
2016-11-11 01:43:56 +01:00
Yury Selivanov f787c90764 Merge 3.6 (issue #27942) 2016-11-09 09:43:37 -05:00
Yury Selivanov 6c10650617 Merge 3.5 (issue #27942) 2016-11-09 09:43:08 -05:00
Yury Selivanov d2fd3599ab ssue #27942: Fix memory leak in codeobject.c 2016-11-09 09:42:14 -05:00
Yury Selivanov 9a2ffbd47c Merge 3.6 (issue #28003) 2016-11-08 19:46:41 -05:00
Yury Selivanov 29310c47a7 Issue #28003: Make WrappedVal, ASend and AThrow GC types 2016-11-08 19:46:22 -05:00
Yury Selivanov ff0273fb20 Merge 3.6 2016-11-08 19:20:08 -05:00
Yury Selivanov 49ffdf6bb2 Merge 3.5 2016-11-08 19:19:52 -05:00
Yury Selivanov 33499b7eed genobject: Remove unnecessary tp_free slots from aiter_wrapper and coro_wrapper 2016-11-08 19:19:28 -05:00
Serhiy Storchaka b2e64f903d Issue #28621: Sped up converting int to float by reusing faster bits counting
implementation.  Patch by Adrian Wielgosik.
2016-11-08 20:34:22 +02:00
Steve Dower 257a4c1503 Closes #27781: Removes special cases for the experimental aspect of PEP 529 2016-11-06 19:35:24 -08:00
Steve Dower 78057b4159 Closes #27781: Removes special cases for the experimental aspect of PEP 529 2016-11-06 19:35:08 -08:00
Benjamin Peterson 6e9d6b9536 merge 3.6 2016-11-06 13:01:23 -08:00
Benjamin Peterson 3bd7900155 merge 3.5 2016-11-06 13:01:15 -08:00
Benjamin Peterson db87c99444 make sure dict view types are initialized 2016-11-06 13:01:07 -08:00
Serhiy Storchaka 85bcf37e15 Issue #23996: Added _PyGen_SetStopIterationValue for safe raising
StopIteration with value. More safely handle non-normalized exceptions
in -_PyGen_FetchStopIterationValue.
2016-11-06 18:47:35 +02:00
Serhiy Storchaka 60e49aa756 Issue #23996: Added _PyGen_SetStopIterationValue for safe raising
StopIteration with value. More safely handle non-normalized exceptions
in -_PyGen_FetchStopIterationValue.
2016-11-06 18:47:03 +02:00
Serhiy Storchaka 24411f8a8d Issue #23996: Added _PyGen_SetStopIterationValue for safe raising
StopIteration with value. More safely handle non-normalized exceptions
in -_PyGen_FetchStopIterationValue.
2016-11-06 18:44:42 +02:00
Serhiy Storchaka f0b311bd73 Issue #28123: _PyDict_GetItem_KnownHash() now can raise an exception as
PyDict_GetItemWithError().  Patch by Xiang Zhang.
2016-11-06 13:18:24 +02:00
INADA Naoki 93f26f794d Issue #28583: PyDict_SetDefault didn't combine split table when needed.
Patch by Xiang Zhang.
2016-11-02 18:45:16 +09:00
Eric V. Smith 5646648678 Issue 28128: Print out better error/warning messages for invalid string escapes. Backport to 3.6. 2016-10-31 14:46:26 -04:00
Serhiy Storchaka 7f0514ad54 Backed out changeset 6b88dfc7b25d 2016-10-31 20:14:05 +02:00
Serhiy Storchaka 7984bff52a Issue #28385: An error message when non-empty format spec is passed to
object.__format__ now contains the name of actual type.
2016-10-30 19:37:46 +02:00
Serhiy Storchaka d1af5effc2 Issue #28385: An error message when non-empty format spec is passed to
object.__format__ now contains the name of actual type.
2016-10-30 19:33:54 +02:00
Serhiy Storchaka 998c9cdd42 Issue #28561: Clean up UTF-8 encoder: remove dead code, update comments, etc.
Patch by Xiang Zhang.
2016-10-30 18:25:27 +02:00
Serhiy Storchaka b7d14a09c2 Merge from 3.5. 2016-10-30 17:25:45 +02:00
Serhiy Storchaka 0438683939 Backed out changeset 9f7505019767 (issue #27275). 2016-10-30 17:17:24 +02:00
Serhiy Storchaka e26e20db95 Issue #28199: Microoptimized dict resizing. Based on patch by Naoki Inada. 2016-10-29 10:50:00 +03:00
Serhiy Storchaka 04230c4087 Issue #28123: _PyDict_GetItem_KnownHash() now can raise an exception as
PyDict_GetItemWithError().  Patch by Xiang Zhang.
2016-11-06 13:19:38 +02:00
INADA Naoki ca2d8be4ba Issue #28580: Optimize iterating split table values.
Patch by Xiang Zhang.
2016-11-04 16:59:10 +09:00
INADA Naoki a3498c7569 Issue #28583: PyDict_SetDefault didn't combine split table when needed.
Patch by Xiang Zhang.
2016-11-02 18:47:24 +09:00
Serhiy Storchaka 5e325d9c41 Merge from 3.6. 2016-10-31 20:15:48 +02:00
Eric V. Smith 42454af094 Issue 28128: Print out better error/warning messages for invalid string escapes. 2016-10-31 09:22:08 -04:00
Serhiy Storchaka 79879e002f Issue #28385: An error message when non-empty format spec is passed to
object.__format__ now contains the name of actual type.
2016-10-30 19:38:05 +02:00
Serhiy Storchaka b982ae8317 Issue #28561: Clean up UTF-8 encoder: remove dead code, update comments, etc.
Patch by Xiang Zhang.
2016-10-30 18:25:46 +02:00
Serhiy Storchaka a182d7bc14 Merge from 3.6. 2016-10-30 17:27:40 +02:00
Serhiy Storchaka 041794908b Issue #28199: Microoptimized dict resizing. Based on patch by Naoki Inada. 2016-10-29 10:50:00 +03:00
Serhiy Storchaka d76d8bfee1 Issue #28199: Microoptimized dict resizing. Based on patch by Naoki Inada. 2016-10-29 10:49:43 +03:00
Yury Selivanov f0bbee6228 Merge 3.6 (issue #28544) 2016-10-28 19:01:46 -04:00
Yury Selivanov 684ef2c888 Issue #28544: Pass `PyObject*` to _PyDict_Pop, not `PyDictObject*` 2016-10-28 19:01:21 -04:00
Serhiy Storchaka 2edcd1cba4 Issue #28426: Deprecated undocumented functions PyUnicode_AsEncodedObject(),
PyUnicode_AsDecodedObject(), PyUnicode_AsDecodedUnicode() and
PyUnicode_AsEncodedUnicode().
2016-10-27 21:08:00 +03:00
Serhiy Storchaka 0093907f0e Issue #28426: Deprecated undocumented functions PyUnicode_AsEncodedObject(),
PyUnicode_AsDecodedObject(), PyUnicode_AsDecodedUnicode() and
PyUnicode_AsEncodedUnicode().
2016-10-27 21:05:49 +03:00
INADA Naoki b574e77122 Issue #28509: dict.update() no longer allocate unnecessary large memory 2016-10-27 19:30:10 +09:00
INADA Naoki b1152be2de Issue #28509: dict.update() no longer allocate unnecessary large memory 2016-10-27 19:26:50 +09:00
Serhiy Storchaka b3e5812300 Issue #27275: Fixed implementation of pop() and popitem() methods in
subclasses of accelerated OrderedDict.
2016-10-25 15:38:28 +03:00
Serhiy Storchaka 1faf9025b5 Issue #27275: Fixed implementation of pop() and popitem() methods in
subclasses of accelerated OrderedDict.
2016-10-25 15:36:56 +03:00
Serhiy Storchaka 4832580596 Issue #27275: Fixed implementation of pop() and popitem() methods in
subclasses of accelerated OrderedDict.
2016-10-25 15:33:23 +03:00
Serhiy Storchaka a4f8823063 Issue #28408: Fixed a leak and remove redundant code in _PyUnicodeWriter_Finish().
Patch by Xiang Zhang.
2016-10-25 13:25:04 +03:00
Serhiy Storchaka c8bc3d1c07 Issue #28408: Fixed a leak and remove redundant code in _PyUnicodeWriter_Finish().
Patch by Xiang Zhang.
2016-10-25 13:23:56 +03:00
Serhiy Storchaka d7e5ff13bb Issue #28426: Fixed potential crash in PyUnicode_AsDecodedObject() in debug build. 2016-10-25 10:18:16 +03:00
Serhiy Storchaka c4a3e90aa8 Issue #28426: Fixed potential crash in PyUnicode_AsDecodedObject() in debug build. 2016-10-25 10:17:33 +03:00
Serhiy Storchaka 839023f12c Issue #28426: Fixed potential crash in PyUnicode_AsDecodedObject() in debug build. 2016-10-25 10:13:43 +03:00
Serhiy Storchaka 77eede35fc Issue #28426: Fixed potential crash in PyUnicode_AsDecodedObject() in debug build. 2016-10-25 10:07:51 +03:00
Serhiy Storchaka 2fbc019c8c Issue #28439: Remove redundant checks in PyUnicode_EncodeLocale and
PyUnicode_DecodeLocaleAndSize.  Patch by Xiang Zhang.
2016-10-23 15:41:36 +03:00
Serhiy Storchaka f8d7d41507 Issue #28511: Use the "U" format instead of "O!" in PyArg_Parse*. 2016-10-23 15:12:25 +03:00
Serhiy Storchaka 523c449ca0 Issue #28504: Cleanup unicode_decode_call_errorhandler_wchar/writer.
Patch by Xiang Zhang.
2016-10-22 23:18:31 +03:00
Raymond Hettinger b12785d456 Reference the original compact-and-ordered proposal 2016-10-22 09:58:14 -07:00
Serhiy Storchaka c4b4d4e2d8 Issue #28214: Improved exception reporting for problematic __set_name__
attributes.
2016-10-21 17:15:20 +03:00
Serhiy Storchaka d5d32d2127 Issue #28214: Improved exception reporting for problematic __set_name__
attributes.
2016-10-21 17:13:31 +03:00
Serhiy Storchaka 14ab277632 Issue #28410: Added _PyErr_FormatFromCause() -- the helper for raising
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]
2016-10-21 17:10:42 +03:00
Serhiy Storchaka 467ab194fc Issue #28410: Added _PyErr_FormatFromCause() -- the helper for raising
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]
2016-10-21 17:09:17 +03:00
Benjamin Peterson d6d49f16f4 merge 3.6 (#28454) 2016-10-16 15:42:33 -07:00
Benjamin Peterson 3aa75528a1 merge 3.5 (#28454) 2016-10-16 15:42:24 -07:00
Benjamin Peterson 8d761ff045 remove extra PyErr_Format arguments (closes #28454)
Patch from Xiang Zhang.
2016-10-16 15:41:46 -07:00
Christian Heimes e590a03db7 Check return value of _PyDict_SetItemId() 2016-10-13 21:10:42 +02:00
Christian Heimes 5cade88ac1 Check return value of _PyDict_SetItemId() 2016-10-13 21:10:31 +02:00
Victor Stinner 5a33759fba Merge 3.6 2016-10-12 13:59:13 +02:00
Victor Stinner ebe17e0347 Fix _Py_normalize_encoding() command
It's not exactly the same than encodings.normalize_encoding(): the C function
also converts to lowercase.
2016-10-12 13:57:45 +02:00
Benjamin Peterson 8a3748290a merge 3.6 (#28417) 2016-10-11 23:01:12 -07:00
Benjamin Peterson b329e1bb5b va_end vargs2 once (closes #28417) 2016-10-11 23:00:58 -07:00
doko@ubuntu.com de69ee71e2 - dictobject.c: Make dict_merge symbol a static symbol 2016-10-11 08:04:02 +02:00
doko@ubuntu.com c96df68ea3 - dictobject.c: Make dict_merge symbol a static symbol 2016-10-11 08:04:02 +02:00
Serhiy Storchaka 2e58f1a52a Issue #28400: Removed uncessary checks in unicode_char and resize_copy.
1. In resize_copy we don't need to PyUnicode_READY(unicode) since when
it's not PyUnicode_WCHAR_KIND it should be ready.
2. In unicode_char, PyUnicode_1BYTE_KIND is handled by get_latin1_char.

Patch by Xiang Zhang.
2016-10-09 23:44:48 +03:00
Serhiy Storchaka 1aa85a9eea Merge from 3.6. 2016-10-09 23:08:58 +03:00
Serhiy Storchaka 49f5cdde1a Issue #28183: Optimize and cleanup dict iteration. 2016-10-09 23:08:05 +03:00
Serhiy Storchaka 74a7e3b981 Merge from 3.6. 2016-10-08 22:48:07 +03:00
Serhiy Storchaka 21d9f10c94 Merge from 3.5. 2016-10-08 22:46:01 +03:00
Serhiy Storchaka 9c0e1f83af Issue #28379: Added sanity checks and tests for PyUnicode_CopyCharacters().
Patch by Xiang Zhang.
2016-10-08 22:45:38 +03:00
Serhiy Storchaka df53392f0d Issue #28376: Creating instances of range_iterator by calling range_iterator
type now is disallowed.  Calling iter() on range instance is the only way.
Patch by Oren Milman.
2016-10-08 22:01:18 +03:00
Serhiy Storchaka aa078674e0 Merge with 3.6. 2016-10-08 21:52:41 +03:00
Serhiy Storchaka c7f490c8b1 Issue #28376: Creating instances of range_iterator by calling range_iterator
type now is deprecated.  Patch by Oren Milman.
2016-10-08 21:50:45 +03:00
Serhiy Storchaka 639098c591 Merge from 3.5. 2016-10-08 21:45:07 +03:00
Serhiy Storchaka 44759bcf13 Issue #28376: The constructor of range_iterator now checks that step is not 0.
Patch by Oren Milman.
2016-10-08 21:43:11 +03:00
Serhiy Storchaka a94ed55dbd Issue #26906: Resolving special methods of uninitialized type now causes
implicit initialization of the type instead of a fail.
2016-10-08 12:28:25 +03:00
Serhiy Storchaka 56588b7055 Issue #26906: Resolving special methods of uninitialized type now causes
implicit initialization of the type instead of a fail.
2016-10-08 12:26:25 +03:00
Serhiy Storchaka 8ef34600c7 Issue #26906: Resolving special methods of uninitialized type now causes
implicit initialization of the type instead of a fail.
2016-10-08 12:24:09 +03:00
Serhiy Storchaka 52597d91e2 Issue #18287: PyType_Ready() now checks that tp_name is not NULL.
Original patch by Niklas Koep.
2016-10-07 23:26:16 +03:00
Serhiy Storchaka e45b7c09ec Issue #18287: PyType_Ready() now checks that tp_name is not NULL.
Original patch by Niklas Koep.
2016-10-07 23:25:46 +03:00
Serhiy Storchaka de0574bdab Issue #18287: PyType_Ready() now checks that tp_name is not NULL.
Original patch by Niklas Koep.
2016-10-07 23:24:35 +03:00
INADA Naoki ecdd36ff88 Issue #28201: Dict reduces possibility of 2nd conflict in hash table.
Do perturb shift after first conflict.
2016-10-06 15:22:28 +09:00
INADA Naoki 267941c675 Issue #28201: Dict reduces possibility of 2nd conflict in hash table.
Do perturb shift after first conflict.
2016-10-06 15:19:07 +09:00
Serhiy Storchaka 7fd9f4b458 Merge heads 2016-10-04 18:23:55 +03:00
Serhiy Storchaka a67e5cad1d Issue #28350: String constants with null character no longer interned. 2016-10-04 18:21:53 +03:00
Serhiy Storchaka e81b0d335b Issue #28350: String constants with null character no longer interned. 2016-10-04 18:21:25 +03:00
Serhiy Storchaka 09f3d080fe Issue #28350: String constants with null character no longer interned. 2016-10-04 18:17:22 +03:00
Benjamin Peterson b983b8de9d merge 3.6 (#26617) 2016-10-04 00:00:35 -07:00
Benjamin Peterson 804480912c merge 3.5 (#26617) 2016-10-04 00:00:23 -07:00
Benjamin Peterson 8f657c35b9 ensure gc tracking is off when invoking weakref callbacks (closes #26617) 2016-10-04 00:00:02 -07:00
Serhiy Storchaka 2e84de3638 Issue #27358: Optimized merging var-keyword arguments and improved error
message when pass a non-mapping as a var-keyword argument.
2016-10-02 11:07:29 +03:00
Serhiy Storchaka e036ef8fa2 Issue #27358: Optimized merging var-keyword arguments and improved error
message when pass a non-mapping as a var-keyword argument.
2016-10-02 11:06:43 +03:00
Serhiy Storchaka be9cddb302 Issue #27942: String constants now interned recursively in tuples and frozensets. 2016-09-30 10:36:15 +03:00
Serhiy Storchaka 3738c2d8ae Issue #27942: String constants now interned recursively in tuples and frozensets. 2016-09-30 10:23:01 +03:00
Serhiy Storchaka 00a0fc1144 Issue #27942: String constants now interned recursively in tuples and frozensets. 2016-09-30 10:07:26 +03:00
Serhiy Storchaka e9e44484a5 Issue #28289: ImportError.__init__ now resets not specified attributes. 2016-09-28 07:53:32 +03:00
Serhiy Storchaka a6f035ee8d Issue #21578: Fixed misleading error message when ImportError called with
invalid keyword args.
2016-09-27 20:51:27 +03:00
Serhiy Storchaka 389ef9dcda Issue #21578: Fixed misleading error message when ImportError called with
invalid keyword args.
2016-09-27 20:51:04 +03:00
Serhiy Storchaka 47dee11ba7 Issue #21578: Fixed misleading error message when ImportError called with
invalid keyword args.
2016-09-27 20:45:35 +03:00
Serhiy Storchaka 60b270f44b Issue #27914: Fixed a comment in PyModule_ExcDef.
Patch by Xiang Zhang.
2016-09-26 23:15:04 +03:00
Serhiy Storchaka 333ad92ec2 Issue #27914: Fixed a comment in PyModule_ExcDef.
Patch by Xiang Zhang.
2016-09-26 23:14:44 +03:00
Serhiy Storchaka a9fc458b77 issue #28144: Decrease empty_keys_struct's dk_refcnt
since there is no dummy_struct any more.
Patch by Xiang Zhang.
2016-09-26 23:01:42 +03:00
Serhiy Storchaka 97932e4c4f issue #28144: Decrease empty_keys_struct's dk_refcnt
since there is no dummy_struct any more.
Patch by Xiang Zhang.
2016-09-26 23:01:23 +03:00
Serhiy Storchaka 9ac73c2052 Issue #28194: Clean up some checks in dict implementation.
Patch by Xiang Zhang.
2016-09-26 21:29:58 +03:00
Serhiy Storchaka 46825d2399 Issue #28194: Clean up some checks in dict implementation.
Patch by Xiang Zhang.
2016-09-26 21:29:34 +03:00
Mark Dickinson 3992d6e5e1 Issue #28203: Merge from 3.6 2016-09-24 15:29:07 +01:00
Mark Dickinson 6997946ec4 Issue #28203: Merge from 3.5 2016-09-24 15:28:34 +01:00
Mark Dickinson 613f8e513c Issue #28203: Fix incorrect type in error message from complex(1.0, {2:3}). Patch by Soumya Sharma. 2016-09-24 15:26:36 +01:00
Benjamin Peterson 40b41fa531 merge 3.6 2016-09-22 23:40:08 -07:00
Benjamin Peterson 7b7228a709 remove unneeded cast 2016-09-22 23:39:59 -07:00
Serhiy Storchaka cf4fb40b9d Issue #28214: Now __set_name__ is looked up on the class instead of the
instance.
2016-09-21 15:55:49 +03:00
Serhiy Storchaka afd02a439f Issue #28214: Now __set_name__ is looked up on the class instead of the
instance.
2016-09-21 15:54:59 +03:00
Victor Stinner 71276144bd Merge 3.6 2016-09-21 14:14:59 +02:00
Victor Stinner 44f4874e68 Merge 3.5 2016-09-21 14:13:53 +02:00
Victor Stinner 1ddf53d496 Fix PyUnicode_FromFormatV() error handling
Issue #28233: Fix a memory leak if the format string contains a non-ASCII
character, destroy the unicode writer.
2016-09-21 14:13:14 +02:00
Christian Heimes e5ad75e242 va_end() all va_copy()ed va_lists. 2016-09-21 11:37:38 +02:00
Christian Heimes 2f2fee19ec va_end() all va_copy()ed va_lists. 2016-09-21 11:37:27 +02:00
Benjamin Peterson 637d1e2b0a merge 3.6 2016-09-20 20:39:44 -07:00
Benjamin Peterson 0c21214f3e replace usage of Py_VA_COPY with the (C99) standard va_copy 2016-09-20 20:39:33 -07:00
Raymond Hettinger 2113c6e41b merge 2016-09-18 21:46:34 -07:00
Raymond Hettinger 6692f01c91 merge 2016-09-18 21:46:08 -07:00
Raymond Hettinger 7eb1becc25 Issue #28189: dictitems_contains no longer swallows compare errors.
(Patch by Xiang Zhang)
2016-09-18 21:45:11 -07:00
Benjamin Peterson f820836e6c merge 3.6 2016-09-18 19:25:00 -07:00
Benjamin Peterson 5d4b09c106 correct silly spelling problem 2016-09-18 19:24:52 -07:00
Benjamin Peterson beb6cf6822 merge 3.6 2016-09-18 19:22:27 -07:00
Benjamin Peterson 19517e4da7 replace obmalloc's homegrown uptr and uchar types with standard ones 2016-09-18 19:22:22 -07:00
Benjamin Peterson 630783d811 merge 3.6 2016-09-18 19:19:38 -07:00
Benjamin Peterson 3924f93794 improvements to code that checks whether Python (obmalloc) allocated an address
- Rename Py_ADDRESS_IN_RANGE to address_in_range and make it a static
  function instead of macro. Any compiler worth its salt will inline this
  function.
- Remove the duplicated function version of Py_ADDRESS_IN_RANGE used when memory
  analysis was active. Instead, we can simply mark address_in_range as allergic
  to dynamic memory checking. We can now remove the
  __attribute__((no_address_safety_analysis)) from _PyObject_Free and
  _PyObject_Realloc. All the badness is contained in address_in_range now.
- Fix the code that tried to only read pool->arenaindex once. Putting something
  in a variable is no guarantee that it won't be read multiple times. We must
  use volatile for that.
2016-09-18 19:12:48 -07:00
Mark Dickinson c1c4a64edb Issue #27111: Minor simplication to long_add and long_sub fast path code. Thanks Oren Milman. 2016-09-17 20:01:56 +01:00
Mark Dickinson fba121fe9d Issue #27441: Remove some redundant assignments to ob_size in longobject.c. Thanks Oren Milman. 2016-09-17 19:44:13 +01:00
Mark Dickinson 92ca535626 Issue #27222: various cleanups in long_rshift. Thanks Oren Milman. 2016-09-17 17:50:50 +01:00
Martin Panter d508d00919 Issue #28139: Merge indentation fixes from 3.5 into 3.6 2016-09-17 07:59:14 +00:00
Martin Panter 6d57fe1c23 Issue #28139: Fix messed up indentation
Also update the classmethod and staticmethod doc strings and comments to
match the RST documentation.
2016-09-17 03:26:16 +00:00
Berker Peksag 7b4bcd2004 Issue #25270: Merge from 3.5 2016-09-16 17:32:06 +03:00
Berker Peksag 4a72a7b6c4 Issue #25270: Prevent codecs.escape_encode() from raising SystemError when an empty bytestring is passed 2016-09-16 17:31:06 +03:00
Benjamin Peterson 6775231597 Unicode 9.0.0
Not completely mechanical since support for East Asian Width changes—emoji
codepoints became Wide—had to be added to unicodedata.
2016-09-14 23:53:47 -07:00
Victor Stinner 611b0fa94c Add _PyDict_CheckConsistency()
Issue #28127: Add a function to check that a dictionary remains consistent
after any change.

By default, tables are not checked, only basic attributes. Define DEBUG_PYDICT
(ex: gcc -D DEBUG_PYDICT) to also check dictionary "content".
2016-09-14 15:02:01 +02:00
Christian Heimes f051e43b22 Issue #28126: Replace Py_MEMCPY with memcpy(). Visual Studio can properly optimize memcpy(). 2016-09-13 20:22:02 +02:00
Victor Stinner d0ad11f6b4 Fix _PyDict_Pop() on pending key
Issue #28120: Fix dict.pop() for splitted dictionary when trying to remove a
"pending key" (Not yet inserted in split-table).

Patch by Xiang Zhang.
2016-09-13 16:56:38 +02:00
Victor Stinner 9926480b6a Issue #28040: Cleanup find_empty_slot()
find_empty_slot() only supports combined dict
2016-09-13 09:38:29 +02:00
Victor Stinner 476bd5ea97 Fix warning in _PyCFunction_FastCallKeywords()
Issue #28105.
2016-09-12 15:33:26 -04:00
Victor Stinner 3c336c5915 Issue #28077: find_empty_slot() only supports combined dict 2016-09-12 14:17:40 +02:00
Victor Stinner 57f91ac95a Document kwnames in _PyObject_FastCallKeywords() and _PyStack_AsDict()
Issue #27213.
2016-09-12 13:37:07 +02:00
Victor Stinner b8d768b019 Revert change f860b7a775c5
Revert change "Issue #27213: Reintroduce checks in _PyStack_AsDict()", pushed
by mistake.
2016-09-12 13:30:02 +02:00
Victor Stinner b1e169bf4b ssue #27213: Reintroduce checks in _PyStack_AsDict() 2016-09-12 12:55:28 +02:00
Raymond Hettinger 4103e4dfbc Issue #28071: Add early-out for differencing from an empty set. 2016-09-11 22:02:28 -07:00
Berker Peksag 1d7feab78a Issue #28045: Merge from 3.5 2016-09-12 07:47:33 +03:00
Berker Peksag ed6224ee0c Issue #28045: Fix comment in range_contains_long()
Patch by wim glenn.
2016-09-12 07:47:04 +03:00
Serhiy Storchaka b72810583e Issue #27213: Fixed different issues with reworked CALL_FUNCTION* opcodes.
* BUILD_TUPLE_UNPACK and BUILD_MAP_UNPACK_WITH_CALL no longer generated with
  single tuple or dict.
* Restored more informative error messages for incorrect var-positional and
  var-keyword arguments.
* Removed code duplications in _PyEval_EvalCodeWithName().
* Removed redundant runtime checks and parameters in _PyStack_AsDict().
* Added a workaround and enabled previously disabled test in test_traceback.
* Removed dead code from the dis module.
2016-09-12 00:52:40 +03:00
Serhiy Storchaka ab8740058a Issue #27129: Replaced wordcode related magic constants with macros. 2016-09-11 13:48:15 +03:00
Nick Coghlan 944368e1cc Issue #23722: Initialize __class__ from type.__new__()
The __class__ cell used by zero-argument super() is now initialized
from type.__new__ rather than __build_class__, so class methods
relying on that will now work correctly when called from metaclass
methods during class creation.

Patch by Martin Teichmann.
2016-09-11 14:45:49 +10:00
Mark Dickinson 82cb124300 Issue #25221: merge from 3.5. 2016-09-10 20:20:08 +01:00
Mark Dickinson 36820dd5a9 Issue #25221: Fix corrupted result from PyLong_FromLong(0) when Python is compiled with NSMALLPOSINTS = 0. 2016-09-10 20:17:36 +01:00
Serhiy Storchaka 473e0e4dba Fixed compiler warnings in compact dict implementation on 32-bit platforms. 2016-09-10 21:34:43 +03:00
Victor Stinner 990397ef1e dictobject.c: explain why stringlib is used 2016-09-09 20:22:59 -07:00
Victor Stinner 37e4ef7b17 Issue #27810: Rerun Argument Clinic on all modules 2016-09-09 20:00:13 -07:00
Victor Stinner a9efb2f56e Add METH_FASTCALL calling convention
Issue #27810: Add a new calling convention for C functions:

    PyObject* func(PyObject *self, PyObject **args,
                   Py_ssize_t nargs, PyObject *kwnames);

Where args is a C array of positional arguments followed by values of keyword
arguments. nargs is the number of positional arguments, kwnames are keys of
keyword arguments. kwnames can be NULL.
2016-09-09 17:40:22 -07:00
Victor Stinner 78601a38c2 Fix SystemError in compact dict
Issue #28040: Fix _PyDict_DelItem_KnownHash() and _PyDict_Pop(): convert
splitted table to combined table to be able to delete the item.

Write an unit test for the issue.

Patch by INADA Naoki.
2016-09-09 19:28:36 -07:00
Brett Cannon a721abac29 Issue #26331: Implement the parsing part of PEP 515.
Thanks to Georg Brandl for the patch.
2016-09-09 14:57:09 -07:00
Serhiy Storchaka 7c19affdce Issue #25856: The __module__ attribute of extension classes and functions
now is interned. This leads to more compact pickle data with protocol 4.
2016-09-10 00:53:02 +03:00
Victor Stinner ae8b69c410 Issue #27810: Add _PyCFunction_FastCallKeywords()
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.
2016-09-09 14:07:44 -07:00
Benjamin Peterson 621b430a14 remove all usage of Py_LOCAL 2016-09-09 13:54:34 -07:00
Victor Stinner d873572095 Add _PyObject_FastCallKeywords()
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()
2016-09-09 12:36:44 -07:00
Benjamin Peterson 6cb526e54d remove unconvincing use of Py_LOCAL 2016-09-09 12:42:51 -07:00
Eric Snow 06aed90a1f Issue #27576: Fix call order in OrderedDict.__init__(). 2016-09-09 11:59:08 -07:00
Yury Selivanov eb6364557f Issue #28003: Implement PEP 525 -- Asynchronous Generators. 2016-09-08 22:01:51 -07:00
Berker Peksag 71c01d43a7 Issue #28033: Fix typo in dictobject.c
Patch by Wesley Emeneker.
2016-09-09 03:57:23 +03:00
Eric Snow 4f29e75289 Issue #24254: Drop cls.__definition_order__. 2016-09-08 15:11:11 -07:00
Christian Heimes 07a2a1b7e5 Additional safe-guard against dereferencing NULL in reduce_newobj
_PyObject_GetNewArguments() can leave args == NULL but the __newobj_ex__
branch expects args to be not-NULL.

CID 1353201
2016-09-09 00:21:22 +02:00
Christian Heimes 884332b45a Add NULL check for gen->gi_code in gen_send_ex()
_PyGen_Finalize() checks that gen->gi_code is not NULL before it
accesses the flags of the code object. This means that the flag
could be NULL.

It passes down the generatore to gen_close() and gen_send_ex().
gen_send_ex() did not check for gen->gi_code != NULL.

CID 1297900
2016-09-09 00:20:13 +02:00
Martin Panter 0be894b2f6 Issue #27895: Spelling fixes (Contributed by Ville Skyttä). 2016-09-07 12:03:06 +00:00
Benjamin Peterson b88db8745b supress coroutine warning when an exception is pending (#27968) 2016-09-07 08:46:59 -07:00
Benjamin Peterson 33d2a492d0 promote some shifts to unsigned, so as not to invoke undefined behavior 2016-09-06 20:40:04 -07:00
Benjamin Peterson 5a7d923e75 make sure to not call memcpy with a NULL second argument 2016-09-06 17:58:25 -07:00
Benjamin Peterson bdddb11b0e clear out f_gen during generator finalization (closes #27812)
Patch from Armin Rigo.
2016-09-05 10:39:57 -07:00
Benjamin Peterson 2f40ed4b94 do not allow _PyGen_Finalize to fail (closes #27811)
Patch from Armin Rigo.
2016-09-05 10:14:54 -07:00
Benjamin Peterson 3c569295d6 do not worry about 64-bit dict sizes on 32-bit platforms 2016-09-08 13:16:41 -07:00
Victor Stinner 3b6a6b4215 Add a new private version to the builtin dict type
Issue #26058: Add a new private version to the builtin dict type, incremented
at each dictionary creation and at each dictionary change.

Implementation of the PEP 509.
2016-09-08 12:51:24 -07:00
R David Murray 110b6fecbb #27364: Deprecate invalid escape strings in str/byutes.
Patch by Emanuel Barry, reviewed by Serhiy Storchaka and Martin Panter.
2016-09-08 15:34:08 -04:00
Benjamin Peterson 186122ead2 access dk_indices through a union 2016-09-08 12:20:12 -07:00
Victor Stinner a4348cc1be Add documentation to the dict implementation
Issue #27350.
2016-09-08 12:01:25 -07:00
Victor Stinner 58f7c5a955 Reindeint DK_xxx macros
Issue #27350.
2016-09-08 11:37:36 -07:00
Victor Stinner 208857ec33 dk_get_index/dk_set_index uses a type indices variable
Issue #27350.
2016-09-08 11:35:46 -07:00
Benjamin Peterson 82cce4c5ef use static inline instead of Py_LOCAL_INLINE 2016-09-08 11:56:06 -07:00
Victor Stinner dee6e252cc Split lookdict_unicode_nodummy() assertion to debug
Issue #27350.
2016-09-08 11:16:07 -07:00
Benjamin Peterson ee178e6d6e fix spelling 2016-09-08 11:08:30 -07:00
Victor Stinner 71211e3386 Add assertions to dk_set_index()
Issue #27350.
2016-09-08 10:52:46 -07:00
Steve Dower cc16be85c0 Issue #27781: Change file system encoding on Windows to UTF-8 (PEP 529) 2016-09-08 10:35:16 -07:00
Benjamin Peterson 003f059b3a link to canonical blogspot 2016-09-08 10:14:31 -07:00
Benjamin Peterson 7322225a57 use native inline instead of Py_LOCAL_INLINE 2016-09-08 09:58:47 -07:00
Benjamin Peterson f0acae2d3c rearrange to make gcc happy 2016-09-08 09:50:08 -07:00
Victor Stinner 98ee9d5b73 Add Py_MEMBER_SIZE macro
Issue #27350: use Py_MEMBER_SIZE() macro to get the size of
PyDictKeyEntry.dk_indices, rather than hardcoding 8.
2016-09-08 09:33:56 -07:00
Victor Stinner 742da040db Implement compact dict
Issue #27350: `dict` implementation is changed like PyPy. It is more compact
and preserves insertion order.

_PyDict_Dummy() function has been removed.

Disable test_gdb: python-gdb.py is not updated yet to the new structure of
compact dictionaries (issue #28023).

Patch written by INADA Naoki.
2016-09-07 17:40:12 -07:00
Benjamin Peterson 47ff0734b8 more PY_LONG_LONG to long long 2016-09-08 09:15:54 -07:00
Eric Snow c943265ba5 Issue #15767: Add ModuleNotFoundError. 2016-09-07 15:42:32 -07:00
Benjamin Peterson 2e7c5e9c11 replace some Py_LOCAL_INLINE with the inline keyword 2016-09-07 15:33:32 -07:00
Brett Cannon d0600ed524 Make PyCodeObject.co_extra even more private to force users through the proper API. 2016-09-07 14:30:39 -07:00
Benjamin Peterson d39206a78c use c++ style comments 2016-09-07 14:12:36 -07:00
Brett Cannon 3788b85628 Change error return value to be more consistent with the rest of Python 2016-09-07 12:51:08 -07:00
Benjamin Peterson 1bf494b0ec use a the bool type for a boolean variable 2016-09-07 11:28:35 -07:00
Brett Cannon 5c4de2863b Add the co_extra field and accompanying APIs to code objects.
This completes PEP 523.
2016-09-07 11:16:41 -07:00
Benjamin Peterson a9296e7f3b require C99 bool 2016-09-07 11:06:17 -07:00