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