Author: Armin Rigo <[email protected]>
Branch:
Changeset: r90064:ae54260458e4
Date: 2017-02-12 09:57 +0100
http://bitbucket.org/pypy/pypy/changeset/ae54260458e4/
Log: inline missing_method(), which avoids re-checking some values for
None
diff --git a/pypy/objspace/std/dictmultiobject.py
b/pypy/objspace/std/dictmultiobject.py
--- a/pypy/objspace/std/dictmultiobject.py
+++ b/pypy/objspace/std/dictmultiobject.py
@@ -102,13 +102,6 @@
result[key] = val
return result
- def missing_method(w_dict, space, w_key):
- if not space.is_w(space.type(w_dict), space.w_dict):
- w_missing = space.lookup(w_dict, '__missing__')
- if w_missing is not None:
- return space.get_and_call_function(w_missing, w_dict, w_key)
- return None
-
def initialize_content(self, list_pairs_w):
for w_k, w_v in list_pairs_w:
self.setitem(w_k, w_v)
@@ -222,9 +215,11 @@
if w_value is not None:
return w_value
- w_missing_item = self.missing_method(space, w_key)
- if w_missing_item is not None:
- return w_missing_item
+ # if there is a __missing__ method, call it
+ if not space.is_w(space.type(self), space.w_dict):
+ w_missing = space.lookup(self, '__missing__')
+ if w_missing is not None:
+ return space.get_and_call_function(w_missing, self, w_key)
space.raise_key_error(w_key)
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit