Victor Stinner
d0dba6eee8
unicode_writer: don't force inline when it is not necessary
Keep inline for performance critical functions (functions used in loops)
14 years ago
Benjamin Peterson
ab3da290fe
close() doesn't take any args ( closes #14717 )
14 years ago
Benjamin Peterson
b63f49f2b4
if the kind of the string to count is larger than the string to search, shortcut to 0
14 years ago
Victor Stinner
a7b654be30
unicode_writer: add finish() method and assertions to write_str() method
* The write_str() method does nothing if the length is zero.
* Replace "struct unicode_writer_t" with "unicode_writer_t"
14 years ago
Victor Stinner
bf4e266397
Issue #14687 : Remove redundant length attribute of unicode_write_t
The length can be read directly from the buffer
14 years ago
Victor Stinner
7989157e49
Issue #14687 : Cleanup unicode_writer_prepare()
"Inline" PyUnicode_Resize(): call directly resize_compact()
14 years ago
Victor Stinner
f2c76aa6cb
Issue #14687 : str%tuple now uses an optimistic "unicode writer" instead of an
accumulator. Directly write characters into the output (don't use a temporary
list): resize and widen the string on demand.
14 years ago
Victor Stinner
1b487b467b
Issue #14624 , #14687 : Optimize unicode_widen()
Don't convert uninitialized characters. Patch written by Serhiy Storchaka.
14 years ago
Victor Stinner
3a7f7977f1
Remove buggy assertion in PyUnicode_Substring()
Use also directly unicode_empty, instead of PyUnicode_New(0,0).
14 years ago
Victor Stinner
684d5fd420
Fix PyUnicode_Substring() for start >= length and start > end
Remove the fast-path for 1-character string: unicode_fromascii() and
_PyUnicode_FromUCS*() now have their own fast-path for 1-character strings.
14 years ago
Victor Stinner
b6cd014d75
Unicode: optimize creating of 1-character strings
14 years ago
Victor Stinner
bff7c96834
Issue #14687 : Optimize str%tuple for the "%(name)s" syntax
Avoid an useless and expensive call to PyUnicode_READ().
14 years ago
Victor Stinner
e6abb488c9
unicodeobject.c: Add MAX_MAXCHAR() macro to (micro-)optimize the computation
of the second argument of PyUnicode_New().
* Create also align_maxchar() function
* Optimize fix_decimal_and_space_to_ascii(): don't compute the maximum
character when ch <= 127 (it is ASCII)
14 years ago
Victor Stinner
438106b66e
Issue #14687 : Cleanup PyUnicode_Format()
14 years ago
Victor Stinner
b5c3ea3af3
Issue #14687 : Optimize str%args
* formatfloat() uses unicode_fromascii() instead of PyUnicode_DecodeASCII()
to not have to check characters, we know that it is really ASCII
* Use PyUnicode_FromOrdinal() instead of _PyUnicode_FromUCS4() to format
a character: if avoids a call to ucs4lib_find_max_char() to compute
the maximum character (whereas we already know it, it is just the character
itself)
14 years ago
Benjamin Peterson
7295c6a871
fix calling the classmethod descriptor directly ( closes #14699 )
14 years ago
Benjamin Peterson
a6f195e48e
change insertdict to not steal references ( #13903 )
14 years ago
Victor Stinner
b80e46eca4
Issue #14687 : Avoid an useless duplicated string in PyUnicode_Format()
14 years ago
Victor Stinner
aff3cc659b
Issue #14687 : Cleanup PyUnicode_Format()
14 years ago
Brett Cannon
62228dbd6c
Issues #13959 , 14647: Re-implement imp.reload() in Lib/imp.py.
Thanks to Eric Snow for the patch.
14 years ago
Victor Stinner
b11d91d969
Fix my previous commit: bool is a long, restore the specical case for bool
14 years ago
Victor Stinner
d0880d57b0
Simplify and optimize formatlong()
* Remove _PyBytes_FormatLong(): inline it into formatlong()
* the input type is always a long, so remove the code for bool
* don't duplicate the string if the length does not change
* Use PyUnicode_DATA() instead of _PyUnicode_AsString()
14 years ago
Victor Stinner
94d558b063
Optimize _PyUnicode_FindMaxChar() find pure ASCII strings
14 years ago
Benjamin Peterson
64acccf46d
decref cached keys on type deallocation ( #13903 )
14 years ago
Victor Stinner
8f825060f1
Check newly created consistency using _PyUnicode_CheckConsistency(str, 1)
* In debug mode, fill the string data with invalid characters
* Simplify also reference counting in PyCodec_BackslashReplaceErrors()
and PyCodec_XMLCharRefReplaceError()
14 years ago
Victor Stinner
718fbf078c
_PyUnicode_CheckConsistency() ensures that the unicode string ends with a
null character
14 years ago
Victor Stinner
3065093bb3
long_to_decimal_string() and _PyLong_Format() check the consistency of newly
created strings using _PyUnicode_CheckConsistency() in debug mode
14 years ago
Benjamin Peterson
15ee821eb5
distiguish between refusing to creating shared keys and error ( #13903 )
14 years ago
Martin v. Loewis
4f2f3b6217
Account for shared keys in type's __sizeof__ ( #13903 ).
14 years ago
Benjamin Peterson
7b1668735a
don't use a slot wrapper from a different special method ( closes #14658 )
This also alters the fix to #11603 . Specifically, setting __repr__ to
object.__str__ now raises a recursion RuntimeError when str() or repr() is
called instead of silently bypassing the recursion. I believe this behavior is
more correct.
14 years ago
Benjamin Peterson
7ce67e45f8
fix dict gc tracking ( #13903 )
14 years ago
Benjamin Peterson
b9f4c9daad
make pointer arith c89
14 years ago
Benjamin Peterson
f3b7d86e25
use correct base ptr
14 years ago
Benjamin Peterson
2844a7a6d3
simplify and reformat
14 years ago
Victor Stinner
ece58deb9f
Close #14648 : Compute correctly maxchar in str.format() for substrin
14 years ago
Benjamin Peterson
db780d0d13
fix instance dicts with str subclasses ( #13903 )
14 years ago
Benjamin Peterson
53b977127f
don't make shared keys with dict subclasses
14 years ago
Benjamin Peterson
7d95e40721
Implement PEP 412: Key-sharing dictionaries ( closes #13903 )
Patch from Mark Shannon.
14 years ago
Mark Dickinson
bcc17eefd2
Issue #14630 : Fix an incorrect access of ob_digit[0] for a zero instance of an int subclass.
14 years ago
Mark Dickinson
e28465482c
Issue #14339 : Improve speed of bin, oct and hex builtins. Patch by Serhiy Storchaka (with minor modifications).
14 years ago
Victor Stinner
b0b224233e
Issue #14385 : Support other types than dict for __builtins__
It is now possible to use a custom type for the __builtins__ namespace, instead
of a dict. It can be used for sandboxing for example. Raise also a NameError
instead of ImportError if __build_class__ name if not found in __builtins__.
14 years ago
Benjamin Peterson
e42fb307ed
SETUP_WITH acts like SETUP_FINALLY for the purposes of setting f_lineno ( closes #14612 )
14 years ago
Victor Stinner
0db176f8f6
Issue #14386 : Expose the dict_proxy internal type as types.MappingProxyType
14 years ago
Brett Cannon
fd0741555b
Issue #2377 : Make importlib the implementation of __import__().
importlib._bootstrap is now frozen into Python/importlib.h and stored
as _frozen_importlib in sys.modules. Py_Initialize() loads the frozen
code along with sys and imp and then uses _frozen_importlib._install()
to set builtins.__import__() w/ _frozen_importlib.__import__().
14 years ago
Brett Cannon
79ec55e980
Issue #1559549 : Add 'name' and 'path' attributes to ImportError.
Currently import does not use these attributes as they are planned
for use by importlib (which will be another commit).
Thanks to Filip Gruszczyński for the initial patch and Brian Curtin
for refining it.
14 years ago
Benjamin Peterson
f6622c8a3e
fix build without Py_DEBUG and DNDEBUG ( closes #14509 )
14 years ago
Victor Stinner
afb5205c48
Close #14249 : Use bit shifts instead of an union, it's more efficient.
Patch written by Serhiy Storchaka
14 years ago
Victor Stinner
e7eee01f36
Close #14249 : Use an union instead of a long to short pointer to avoid aliasing
issue. Speed up UTF-16 by 20%.
14 years ago
Antoine Pitrou
a701388de1
Rename _PyIter_GetBuiltin to _PyObject_GetBuiltin, and do not include it in the stable ABI.
14 years ago
Kristján Valur Jónsson
31668b8f7a
Issue #14288 : Serialization support for builtin iterators.
14 years ago