<feed xmlns='http://www.w3.org/2005/Atom'>
<title>delta/cpython.git/Objects, branch master</title>
<subtitle>
</subtitle>
<link rel='alternate' type='text/html' href='http://trove.baserock.org/cgit/delta/cpython.git/'/>
<entry>
<title>Backed out changeset f23fa1f7b68f</title>
<updated>2017-02-10T13:19:36+00:00</updated>
<author>
<name>Victor Stinner</name>
<email>victor.stinner@gmail.com</email>
</author>
<published>2017-02-10T13:19:36+00:00</published>
<link rel='alternate' type='text/html' href='http://trove.baserock.org/cgit/delta/cpython.git/commit/?id=ec7729dfc2425044ab4d508165b4fb0a00c065d0'/>
<id>ec7729dfc2425044ab4d508165b4fb0a00c065d0</id>
<content type='text'>
Sorry, I didn't want to push this change before the review :-( I was pushing a
change into the 2.7 branch.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Sorry, I didn't want to push this change before the review :-( I was pushing a
change into the 2.7 branch.
</pre>
</div>
</content>
</entry>
<entry>
<title>Issue #29465: Add Objects/call.c file</title>
<updated>2017-02-10T12:32:29+00:00</updated>
<author>
<name>Victor Stinner</name>
<email>victor.stinner@gmail.com</email>
</author>
<published>2017-02-10T12:32:29+00:00</published>
<link rel='alternate' type='text/html' href='http://trove.baserock.org/cgit/delta/cpython.git/commit/?id=d3f4d3fd74ca4924bbca57433ba13435c164978e'/>
<id>d3f4d3fd74ca4924bbca57433ba13435c164978e</id>
<content type='text'>
* Move all functions to call objects in a new Objects/call.c file.
* Rename fast_function() to _PyFunction_FastCallKeywords().
* Copy null_error() from Objects/abstract.c
* Inline type_error() in call.c to not have to copy it, it was only
  called once.
* Export _PyEval_EvalCodeWithName() since it is now called
  from call.c.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* Move all functions to call objects in a new Objects/call.c file.
* Rename fast_function() to _PyFunction_FastCallKeywords().
* Copy null_error() from Objects/abstract.c
* Inline type_error() in call.c to not have to copy it, it was only
  called once.
* Export _PyEval_EvalCodeWithName() since it is now called
  from call.c.
</pre>
</div>
</content>
</entry>
<entry>
<title>Issue #29507: Fix _PyObject_CallFunctionVa()</title>
<updated>2017-02-09T23:41:06+00:00</updated>
<author>
<name>Victor Stinner</name>
<email>victor.stinner@gmail.com</email>
</author>
<published>2017-02-09T23:41:06+00:00</published>
<link rel='alternate' type='text/html' href='http://trove.baserock.org/cgit/delta/cpython.git/commit/?id=9a86ff08b5e9595a0801045ba3a6738a0bd3783f'/>
<id>9a86ff08b5e9595a0801045ba3a6738a0bd3783f</id>
<content type='text'>
is_size_t test was reversed. Bug spotted by INADA Naoki.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
is_size_t test was reversed. Bug spotted by INADA Naoki.
</pre>
</div>
</content>
</entry>
<entry>
<title>Optimize slots: avoid temporary PyMethodObject</title>
<updated>2017-02-09T21:53:47+00:00</updated>
<author>
<name>Victor Stinner</name>
<email>victor.stinner@gmail.com</email>
</author>
<published>2017-02-09T21:53:47+00:00</published>
<link rel='alternate' type='text/html' href='http://trove.baserock.org/cgit/delta/cpython.git/commit/?id=18bedc08c9a8216c93476e3da1cc4a3922d4cba6'/>
<id>18bedc08c9a8216c93476e3da1cc4a3922d4cba6</id>
<content type='text'>
Issue #29507: Optimize slots calling Python methods. For Python methods, get
the unbound Python function and prepend arguments with self, rather than
calling the descriptor which creates a temporary PyMethodObject.

Add a new _PyObject_FastCall_Prepend() function used to call the unbound Python
method with self. It avoids the creation of a temporary tuple to pass
positional arguments.

Avoiding temporary PyMethodObject and avoiding temporary tuple makes Python
slots up to 1.46x faster. Microbenchmark on a __getitem__() method implemented
in Python:

Median +- std dev: 121 ns +- 5 ns -&gt; 82.8 ns +- 1.0 ns: 1.46x faster (-31%)

Co-Authored-by: INADA Naoki &lt;songofacandy@gmail.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Issue #29507: Optimize slots calling Python methods. For Python methods, get
the unbound Python function and prepend arguments with self, rather than
calling the descriptor which creates a temporary PyMethodObject.

Add a new _PyObject_FastCall_Prepend() function used to call the unbound Python
method with self. It avoids the creation of a temporary tuple to pass
positional arguments.

Avoiding temporary PyMethodObject and avoiding temporary tuple makes Python
slots up to 1.46x faster. Microbenchmark on a __getitem__() method implemented
in Python:

Median +- std dev: 121 ns +- 5 ns -&gt; 82.8 ns +- 1.0 ns: 1.46x faster (-31%)

Co-Authored-by: INADA Naoki &lt;songofacandy@gmail.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix PyCFunction_Call() performance issue</title>
<updated>2017-02-09T01:01:37+00:00</updated>
<author>
<name>Victor Stinner</name>
<email>victor.stinner@gmail.com</email>
</author>
<published>2017-02-09T01:01:37+00:00</published>
<link rel='alternate' type='text/html' href='http://trove.baserock.org/cgit/delta/cpython.git/commit/?id=bbd3587a29510bd5a318e0a19fc8570c0cd3b622'/>
<id>bbd3587a29510bd5a318e0a19fc8570c0cd3b622</id>
<content type='text'>
Issue #29259, #29465: PyCFunction_Call() doesn't create anymore a redundant
tuple to pass positional arguments for METH_VARARGS.

Add a new cfunction_call() subfunction.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Issue #29259, #29465: PyCFunction_Call() doesn't create anymore a redundant
tuple to pass positional arguments for METH_VARARGS.

Add a new cfunction_call() subfunction.
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix refleaks if Py_EnterRecursiveCall() fails</title>
<updated>2017-02-08T11:57:09+00:00</updated>
<author>
<name>Victor Stinner</name>
<email>victor.stinner@gmail.com</email>
</author>
<published>2017-02-08T11:57:09+00:00</published>
<link rel='alternate' type='text/html' href='http://trove.baserock.org/cgit/delta/cpython.git/commit/?id=dedb0fac27238797f6923be5923c2021bcb02376'/>
<id>dedb0fac27238797f6923be5923c2021bcb02376</id>
<content type='text'>
Issue #29306: Destroy argstuple and kwdict if Py_EnterRecursiveCall() fails.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Issue #29306: Destroy argstuple and kwdict if Py_EnterRecursiveCall() fails.
</pre>
</div>
</content>
</entry>
<entry>
<title>Issue #29306: Fix usage of Py_EnterRecursiveCall()</title>
<updated>2017-02-08T11:06:00+00:00</updated>
<author>
<name>Victor Stinner</name>
<email>victor.stinner@gmail.com</email>
</author>
<published>2017-02-08T11:06:00+00:00</published>
<link rel='alternate' type='text/html' href='http://trove.baserock.org/cgit/delta/cpython.git/commit/?id=b4e41f42fc0d0d07c18a8e2b752699c379ad3c78'/>
<id>b4e41f42fc0d0d07c18a8e2b752699c379ad3c78</id>
<content type='text'>
* *PyCFunction_*Call*() functions now call Py_EnterRecursiveCall().
* PyObject_Call() now calls directly _PyFunction_FastCallDict() and
  PyCFunction_Call() to avoid calling Py_EnterRecursiveCall() twice per
  function call
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* *PyCFunction_*Call*() functions now call Py_EnterRecursiveCall().
* PyObject_Call() now calls directly _PyFunction_FastCallDict() and
  PyCFunction_Call() to avoid calling Py_EnterRecursiveCall() twice per
  function call
</pre>
</div>
</content>
</entry>
<entry>
<title>Issue #29460: _PyArg_NoKeywords(), _PyArg_NoStackKeywords() and</title>
<updated>2017-02-06T08:41:46+00:00</updated>
<author>
<name>Serhiy Storchaka</name>
<email>storchaka@gmail.com</email>
</author>
<published>2017-02-06T08:41:46+00:00</published>
<link rel='alternate' type='text/html' href='http://trove.baserock.org/cgit/delta/cpython.git/commit/?id=54ab9ca906471f8a49e22c7f85d4f34c2ef7212c'/>
<id>54ab9ca906471f8a49e22c7f85d4f34c2ef7212c</id>
<content type='text'>
_PyArg_NoPositional() now are macros.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
_PyArg_NoPositional() now are macros.
</pre>
</div>
</content>
</entry>
<entry>
<title>Reduce load factor (from 66% to 60%) to improve effectiveness of linear probing.</title>
<updated>2017-02-04T10:43:42+00:00</updated>
<author>
<name>Raymond Hettinger</name>
<email>python@rcn.com</email>
</author>
<published>2017-02-04T10:43:42+00:00</published>
<link rel='alternate' type='text/html' href='http://trove.baserock.org/cgit/delta/cpython.git/commit/?id=7a46b9a1dd0da5ef1362330ee4c94ca1fdc06d0c'/>
<id>7a46b9a1dd0da5ef1362330ee4c94ca1fdc06d0c</id>
<content type='text'>
Decreased density gives better collision statistics (average of 2.5 probes in a
full table versus 3.0 previously) and fewer occurences of starting a second
possibly overlapping sequence of 10 linear probes.  Makes resizes a little more
frequent but each with less work (fewer insertions and fewer collisions).
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Decreased density gives better collision statistics (average of 2.5 probes in a
full table versus 3.0 previously) and fewer occurences of starting a second
possibly overlapping sequence of 10 linear probes.  Makes resizes a little more
frequent but each with less work (fewer insertions and fewer collisions).
</pre>
</div>
</content>
</entry>
<entry>
<title>Issue #29311: Regenerate Argument Clinic.</title>
<updated>2017-02-04T06:05:07+00:00</updated>
<author>
<name>Serhiy Storchaka</name>
<email>storchaka@gmail.com</email>
</author>
<published>2017-02-04T06:05:07+00:00</published>
<link rel='alternate' type='text/html' href='http://trove.baserock.org/cgit/delta/cpython.git/commit/?id=9bfb9694a65124a8191cdb8ce7992445d1d0f4d2'/>
<id>9bfb9694a65124a8191cdb8ce7992445d1d0f4d2</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
</feed>
