[Python-checkins] cpython (3.6): Issue #28665: Harmonize STORE_DEREF with STORE_FAST and LOAD_DEREF giving a 40%

raymond.hettinger python-checkins at python.org
Fri Nov 11 07:32:21 EST 2016


https://hg.python.org/cpython/rev/d78d45436753
changeset:   105056:d78d45436753
branch:      3.6
parent:      105053:1a88baaed7a0
user:        Raymond Hettinger <python at rcn.com>
date:        Fri Nov 11 04:31:18 2016 -0800
summary:
  Issue #28665: Harmonize STORE_DEREF with STORE_FAST and LOAD_DEREF giving a 40% speedup.

files:
  Misc/NEWS      |  2 ++
  Python/ceval.c |  5 +++--
  2 files changed, 5 insertions(+), 2 deletions(-)


diff --git a/Misc/NEWS b/Misc/NEWS
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -13,6 +13,8 @@
 - Issue #19398: Extra slash no longer added to sys.path components in case of
   empty compile-time PYTHONPATH components.
 
+- Issue #28665:  Improve speed of the STORE_DEREF opcode by 40%.
+
 - Issue #28583: PyDict_SetDefault didn't combine split table when needed.
   Patch by Xiang Zhang.
 
diff --git a/Python/ceval.c b/Python/ceval.c
--- a/Python/ceval.c
+++ b/Python/ceval.c
@@ -2462,8 +2462,9 @@
         TARGET(STORE_DEREF) {
             PyObject *v = POP();
             PyObject *cell = freevars[oparg];
-            PyCell_Set(cell, v);
-            Py_DECREF(v);
+            PyObject *oldobj = PyCell_GET(cell);
+            PyCell_SET(cell, v);
+            Py_XDECREF(oldobj);
             DISPATCH();
         }
 

-- 
Repository URL: https://hg.python.org/cpython


More information about the Python-checkins mailing list