[pypy-commit] pypy dynamic-specialized-tuple: copy this stuff to a descr, so caching is done by someone else

fijal noreply at buildbot.pypy.org
Tue Apr 17 16:21:16 CEST 2012


Author: Maciej Fijalkowski <fijall at gmail.com>
Branch: dynamic-specialized-tuple
Changeset: r54463:1011b0cf4476
Date: 2012-04-17 16:20 +0200
http://bitbucket.org/pypy/pypy/changeset/1011b0cf4476/

Log:	copy this stuff to a descr, so caching is done by someone else

diff --git a/pypy/jit/backend/llsupport/llmodel.py b/pypy/jit/backend/llsupport/llmodel.py
--- a/pypy/jit/backend/llsupport/llmodel.py
+++ b/pypy/jit/backend/llsupport/llmodel.py
@@ -22,8 +22,6 @@
                  gcdescr=None):
         assert type(opts) is not bool
         self.opts = opts
-        self.arraydescr_cache = {}
-
         from pypy.jit.backend.llsupport.gc import get_ll_description
         AbstractCPU.__init__(self)
         self.rtyper = rtyper
@@ -293,14 +291,12 @@
                                                  extrainfo, ffi_flags)
 
     def copy_and_change_descr_typeinfo_to_ptr(self, descr):
-        key = (descr.basesize, descr.itemsize, descr.lendescr)
-        try:
-            return self.arraydescr_cache[key]
-        except KeyError:
-            new_descr = ArrayDescr(descr.basesize, descr.itemsize,
-                                   descr.lendescr, FLAG_POINTER)
-            self.arraydescr_cache[key] = new_descr
-            return new_descr
+        if hasattr(descr, 'typeinfo_to_ptr_descr'):
+            return descr.typeinfo_to_ptr_descr
+        new_descr = ArrayDescr(descr.basesize, descr.itemsize,
+                               descr.lendescr, FLAG_POINTER)
+        descr.typeinfo_to_ptr_descr = new_descr
+        return new_descr
 
     def get_overflow_error(self):
         ovf_vtable = self.cast_adr_to_int(self._ovf_error_vtable)


More information about the pypy-commit mailing list