Author: Carl Friedrich Bolz <[email protected]>
Branch: improve-heap-caching-tracing
Changeset: r47059:38b764f137a9
Date: 2011-09-04 11:20 +0200
http://bitbucket.org/pypy/pypy/changeset/38b764f137a9/
Log: change array cache layout
diff --git a/pypy/jit/metainterp/heapcache.py b/pypy/jit/metainterp/heapcache.py
--- a/pypy/jit/metainterp/heapcache.py
+++ b/pypy/jit/metainterp/heapcache.py
@@ -16,7 +16,7 @@
# maps descrs to {from_box, to_box} dicts
self.heap_cache = {}
# heap array cache
- # maps descrs to {index: (from_box, to_box)} dicts
+ # maps descrs to {index: {from_box: to_box}} dicts
self.heap_array_cache = {}
def invalidate_caches(self, opnum, descr):
@@ -87,9 +87,9 @@
index = indexbox.getint()
cache = self.heap_array_cache.get(descr, None)
if cache:
- frombox, tobox = cache.get(index, (None, None))
- if frombox is box:
- return tobox
+ indexcache = cache.get(index, None)
+ if indexcache is not None:
+ return indexcache.get(box, None)
def setarrayitem(self, box, descr, indexbox, valuebox):
if not isinstance(indexbox, ConstInt):
@@ -97,9 +97,9 @@
if cache is not None:
cache.clear()
return
+ index = indexbox.getint()
cache = self.heap_array_cache.setdefault(descr, {})
- index = indexbox.getint()
- cache[index] = box, valuebox
+ cache[index] = {box: valuebox}
def replace_box(self, oldbox, newbox):
for descr, d in self.heap_cache.iteritems():
_______________________________________________
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit