[pypy-commit] pypy default: shortcut through setitem_str when possible

pjenvey noreply at buildbot.pypy.org
Wed Apr 30 00:19:41 CEST 2014


Author: Philip Jenvey <pjenvey at underboss.org>
Branch: 
Changeset: r71068:de6c6c698d53
Date: 2014-04-29 15:14 -0700
http://bitbucket.org/pypy/pypy/changeset/de6c6c698d53/

Log:	shortcut through setitem_str when possible

diff --git a/pypy/interpreter/argument.py b/pypy/interpreter/argument.py
--- a/pypy/interpreter/argument.py
+++ b/pypy/interpreter/argument.py
@@ -321,10 +321,11 @@
                 limit -= len(self.keyword_names_w)
             for i in range(len(self.keywords)):
                 if i < limit:
-                    w_key = space.wrap(self.keywords[i])
+                    key = self.keywords[i]
+                    space.setitem_str(w_kwds, key, self.keywords_w[i])
                 else:
                     w_key = self.keyword_names_w[i - limit]
-                space.setitem(w_kwds, w_key, self.keywords_w[i])
+                    space.setitem(w_kwds, w_key, self.keywords_w[i])
         return w_args, w_kwds
 
 # JIT helper functions
@@ -416,10 +417,10 @@
                 break
         else:
             if i < limit:
-                w_key = space.wrap(keywords[i])
+                space.setitem_str(w_kwds, keywords[i], keywords_w[i])
             else:
                 w_key = keyword_names_w[i - limit]
-            space.setitem(w_kwds, w_key, keywords_w[i])
+                space.setitem(w_kwds, w_key, keywords_w[i])
 
 #
 # ArgErr family of exceptions raised in case of argument mismatch.
diff --git a/pypy/interpreter/test/test_argument.py b/pypy/interpreter/test/test_argument.py
--- a/pypy/interpreter/test/test_argument.py
+++ b/pypy/interpreter/test/test_argument.py
@@ -93,6 +93,7 @@
 
     def setitem(self, obj, key, value):
         obj[key] = value
+    setitem_str = setitem
 
     def getitem(self, obj, key):
         return obj[key]


More information about the pypy-commit mailing list