Author: Carl Friedrich Bolz <[email protected]>
Branch: improve-consecutive-dict-lookups
Changeset: r70020:325e14172b33
Date: 2014-03-17 19:22 +0100
http://bitbucket.org/pypy/pypy/changeset/325e14172b33/

Log:    I think this expresses the logic much more clearly

diff --git a/rpython/jit/metainterp/optimizeopt/heap.py 
b/rpython/jit/metainterp/optimizeopt/heap.py
--- a/rpython/jit/metainterp/optimizeopt/heap.py
+++ b/rpython/jit/metainterp/optimizeopt/heap.py
@@ -299,20 +299,20 @@
     def _optimize_CALL_DICT_LOOKUP(self, op):
         args = self.optimizer.make_args_key(op)
         descr = op.getdescr().get_extra_info().extradescr
-        res_v = self.getvalue(op.result)
         if descr in self.cached_dict_reads:
             d = self.cached_dict_reads[descr]
         else:
             d = args_dict_value()
+            self.cached_dict_reads[descr] = d
         try:
             res_v = d[args]
+        except KeyError:
+            d[args] = self.getvalue(op.result)
+            res = False
+        else:
             self.make_equal_to(op.result, res_v)
             self.remove_next_guard = True
             res = True
-        except KeyError:
-            d[args] = res_v
-            res = False
-        self.cached_dict_reads[descr] = d
         return res
 
     def optimize_GUARD_NO_EXCEPTION(self, op):
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to