cpython/Objects
Raymond Hettinger c629d4c9a2 Replace outdated optimization with clearer code that compiles better.
Letting the compiler decide how to optimize the multiply by five
gives it the freedom to make better choices for the best technique
for a given target machine.

For example, GCC on x86_64 produces a little bit better code:

Old-way (3 steps with a data dependency between each step):

    shrq    $5, %r13
    leaq    1(%rbx,%r13), %rax
    leaq    (%rax,%rbx,4), %rbx

New-way (3 steps with no dependency between the first two steps
         which can be run in parallel):

    leaq    (%rbx,%rbx,4), %rax     # i*5
    shrq    $5, %r13                # perturb >>= PERTURB_SHIFT
    leaq    1(%r13,%rax), %rbx      # 1 + perturb + i*5
2013-08-05 22:24:50 -07:00
..
stringlib rewrite the parsing of field names to be more consistent wrt recursive expansion 2013-05-17 18:22:31 -05:00
abstract.c Issue #16741: Fix an error reporting in int(). 2013-08-03 21:14:05 +03:00
accu.c Issue #14387: Do not include accu.h from Python.h. 2012-03-22 14:38:16 +01:00
boolobject.c Recorded merge of revisions 81032 via svnmerge from 2010-05-09 16:14:21 +00:00
bytearrayobject.c Propagate error when PyByteArray_Resize() fails in bytearray_translate() 2013-07-21 02:04:44 +02:00
bytes_methods.c Issue #13738: Simplify implementation of bytes.lower() and bytes.upper(). 2012-01-08 16:22:46 +01:00
bytesobject.c Issue #12983: Bytes literals with invalid \x escape now raise a SyntaxError 2013-02-10 17:43:25 +02:00
capsule.c Issue #2443: Added a new macro, Py_VA_COPY, which is equivalent to C99 2010-08-11 17:31:17 +00:00
cellobject.c Recorded merge of revisions 81032 via svnmerge from 2010-05-09 16:14:21 +00:00
classobject.c Py_TYPE() has already dereferenced self before the NULL check. Moved Py_TYPE() after the check for self == NULL 2012-09-10 02:45:56 +02:00
codeobject.c Issue #15456: Fix code __sizeof__ after #12399 change. 2012-07-26 22:23:23 +02:00
complexobject.c Close #17694: Add minimum length to _PyUnicodeWriter 2013-04-17 23:02:17 +02:00
descrobject.c Use Py_intptr_t to store the difference between two pointers, instead of int 2013-05-08 00:44:15 +02:00
dictnotes.txt Issue #15055: update dictnotes.txt. Patch by Mark Shannon. 2012-06-24 21:03:45 +02:00
dictobject.c Issue #18520: Fix _PyDict_GetItemId(), suppress _PyUnicode_FromId() error 2013-07-22 23:50:57 +02:00
enumobject.c Issue #14288: Serialization support for builtin iterators. 2012-04-03 10:49:41 +00:00
exceptions.c Issue #15767: back out 8a0ed9f63c6e, finishing the removal of 2013-07-04 17:51:50 -04:00
fileobject.c If MS_WIN64 is defined, MS_WINDOWS is also defined: #ifdef can be simplified. 2013-06-25 00:37:25 +02:00
floatobject.c Issue #18520: Add a new PyStructSequence_InitType2() function, same than 2013-07-22 22:24:54 +02:00
frameobject.c Issue #17934: Add a clear() method to frame objects, to help clean up expensive details (local variables) and break reference cycles. 2013-08-05 23:26:40 +02:00
funcobject.c Issue #18520: Fix PyFunction_NewWithQualName() error handling 2013-07-22 23:04:55 +02:00
genobject.c Issue #17934: Add a clear() method to frame objects, to help clean up expensive details (local variables) and break reference cycles. 2013-08-05 23:26:40 +02:00
iterobject.c Close #17932: Fix an integer overflow issue on Windows 64-bit in iterators: 2013-06-04 23:02:46 +02:00
listobject.c Issue #18408: Fix list_ass_slice(), handle list_resize() failure 2013-07-19 23:06:21 +02:00
listsort.txt Merged revisions 74613,74615,74619-74620,74622 via svnmerge from 2009-09-01 08:13:16 +00:00
lnotab_notes.txt Merged revisions 72487-72488,72879 via svnmerge from 2009-07-21 04:30:03 +00:00
longobject.c Issue #16741: Fix an error reporting in int(). 2013-08-03 21:14:05 +03:00
memoryobject.c Fix error messages. 2013-02-19 13:44:49 +01:00
methodobject.c Issue #18408: In debug mode, PyCFunction_Call() now checks if an exception was 2013-07-11 23:44:46 +02:00
moduleobject.c Issue #18214: Improve finalization of Python modules to avoid setting their globals to None, in most cases. 2013-07-31 23:14:08 +02:00
namespaceobject.c Issue #9566: Fix a compiler warning on Windows 64-bit in namespace_init() 2013-06-05 00:13:51 +02:00
object.c Issue #18112: PEP 442 implementation (safe object finalization). 2013-07-30 19:59:21 +02:00
obmalloc.c Issue #18408: Fix _PyMem_DebugRealloc() 2013-07-09 00:44:43 +02:00
rangeobject.c Issue #16451: Refactor to remove duplication between range and slice in slice index computations. 2012-11-17 19:18:10 +00:00
setobject.c Replace outdated optimization with clearer code that compiles better. 2013-08-05 22:24:50 -07:00
sliceobject.c Issue #16451: Refactor to remove duplication between range and slice in slice index computations. 2012-11-17 19:18:10 +00:00
structseq.c Issue #18520: Add a new PyStructSequence_InitType2() function, same than 2013-07-22 22:24:54 +02:00
tupleobject.c Issue #9566: More long/Py_ssize_t fixes in tuple and list iterators (it_index) 2013-06-24 23:59:24 +02:00
typeobject.c Issue #18112: PEP 442 implementation (safe object finalization). 2013-07-30 19:59:21 +02:00
typeslots.inc remove __version__s dependent on subversion keyword expansion (closes #12221) 2011-05-31 20:52:17 -05:00
typeslots.py remove __version__s dependent on subversion keyword expansion (closes #12221) 2011-05-31 20:52:17 -05:00
unicodectype.c fix old titlecase function for extended case chars 2012-01-15 21:33:32 -05:00
unicodeobject.c merge 2013-08-04 11:51:35 -07:00
unicodetype_db.h upgrade to UCD 6.2 2012-09-29 13:47:39 -04:00
weakrefobject.c Issue #17643: Add __callback__ attribute to weakref.ref. 2013-04-13 15:45:44 +01:00