Author: Armin Rigo <ar...@tunes.org> Branch: keys_with_hash Changeset: r79347:d5a4b8506d27 Date: 2015-09-01 13:15 +0200 http://bitbucket.org/pypy/pypy/changeset/d5a4b8506d27/
Log: Avoid duplicating code diff --git a/rpython/rtyper/lltypesystem/rordereddict.py b/rpython/rtyper/lltypesystem/rordereddict.py --- a/rpython/rtyper/lltypesystem/rordereddict.py +++ b/rpython/rtyper/lltypesystem/rordereddict.py @@ -584,11 +584,7 @@ return bool(d) and d.num_live_items != 0 def ll_dict_getitem(d, key): - index = d.lookup_function(d, key, d.keyhash(key), FLAG_LOOKUP) - if index >= 0: - return d.entries[index].value - else: - raise KeyError + return ll_dict_getitem_with_hash(d, key, d.keyhash(key)) def ll_dict_getitem_with_hash(d, key, hash): index = d.lookup_function(d, key, hash, FLAG_LOOKUP) @@ -598,13 +594,11 @@ raise KeyError def ll_dict_setitem(d, key, value): - hash = d.keyhash(key) - index = d.lookup_function(d, key, hash, FLAG_STORE) - return _ll_dict_setitem_lookup_done(d, key, value, hash, index) + ll_dict_setitem_with_hash(d, key, d.keyhash(key), value) def ll_dict_setitem_with_hash(d, key, hash, value): index = d.lookup_function(d, key, hash, FLAG_STORE) - return _ll_dict_setitem_lookup_done(d, key, value, hash, index) + _ll_dict_setitem_lookup_done(d, key, value, hash, index) # It may be safe to look inside always, it has a few branches though, and their # frequencies needs to be investigated. @@ -785,10 +779,7 @@ def ll_dict_delitem(d, key): - index = d.lookup_function(d, key, d.keyhash(key), FLAG_DELETE) - if index < 0: - raise KeyError - _ll_dict_del(d, index) + ll_dict_delitem_with_hash(d, key, d.keyhash(key)) def ll_dict_delitem_with_hash(d, key, hash): index = d.lookup_function(d, key, hash, FLAG_DELETE) @@ -1274,8 +1265,7 @@ ll_dict_items = _make_ll_keys_values_items('items') def ll_dict_contains(d, key): - i = d.lookup_function(d, key, d.keyhash(key), FLAG_LOOKUP) - return i >= 0 + return ll_dict_contains_with_hash(d, key, d.keyhash(key)) def ll_dict_contains_with_hash(d, key, hash): i = d.lookup_function(d, key, hash, FLAG_LOOKUP) _______________________________________________ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit