Author: Mark Young <marky1...@gmail.com> Branch: py3.3 Changeset: r82197:0832f3abe320 Date: 2016-02-12 20:51 -0500 http://bitbucket.org/pypy/pypy/changeset/0832f3abe320/
Log: Make my changes respect proper rpython convention. Also, change to a items() based approach for save_module_content_for_reload. diff --git a/pypy/interpreter/mixedmodule.py b/pypy/interpreter/mixedmodule.py --- a/pypy/interpreter/mixedmodule.py +++ b/pypy/interpreter/mixedmodule.py @@ -58,15 +58,20 @@ self.save_module_content_for_future_reload() def save_module_content_for_future_reload(self): + # Because setdictvalue is unable to immediately load all attributes + # (due to an importlib bootstrapping problem), this method needs to be + # able to able to save single names at a time. The idea now is to save + # in pieces, being careful to never overwrite the value of a key + # already in w_initialdict. if not self.space.is_none(self.w_initialdict): - present_keys = self.w_initialdict.w_keys() - new_keys = self.w_dict.w_keys() - key_count = new_keys.length() - for i in range(key_count): - key = new_keys.getitem(i) - val_to_set = self.space.getitem(self.w_dict, key) - if not self.space.is_true(self.space.contains(present_keys, key)): - self.space.setitem(self.w_initialdict, key, val_to_set) + w_present_keys = self.w_initialdict.w_keys() + w_new_items = self.w_dict.iteritems() + while True: + w_key, w_value = w_new_items.next_item() + if w_key is None: + break + if not self.space.is_true(self.space.contains(w_present_keys, w_key)): + self.space.setitem(self.w_initialdict, w_key, w_value) else: self.w_initialdict = self.space.call_method(self.w_dict, 'copy') _______________________________________________ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit