Author: Armin Rigo <[email protected]>
Branch: bitstring
Changeset: r83920:9e7fd5b9e987
Date: 2016-04-26 22:40 +0200
http://bitbucket.org/pypy/pypy/changeset/9e7fd5b9e987/

Log:    Must capture 'metainterp_sd.all_descrs' really at the end of
        initialization. The previous logic would miss at least one descr,
        'clear_vable_descr', made by VirtualizableInfo.finish().

diff --git a/rpython/jit/metainterp/pyjitpl.py 
b/rpython/jit/metainterp/pyjitpl.py
--- a/rpython/jit/metainterp/pyjitpl.py
+++ b/rpython/jit/metainterp/pyjitpl.py
@@ -1809,7 +1809,6 @@
         self._addr2name_values = [value for key, value in list_of_addr2name]
 
     def finish_setup(self, codewriter, optimizer=None):
-        from rpython.jit.codewriter import effectinfo
         from rpython.jit.metainterp.blackhole import BlackholeInterpBuilder
         self.blackholeinterpbuilder = BlackholeInterpBuilder(codewriter, self)
         #
@@ -1839,6 +1838,9 @@
         self.cpu.propagate_exception_descr = exc_descr
         #
         self.globaldata = MetaInterpGlobalData(self)
+
+    def finish_setup_descrs(self):
+        from rpython.jit.codewriter import effectinfo
         self.all_descrs = self.cpu.setup_descrs()
         effectinfo.compute_bitstrings(self.all_descrs)
 
diff --git a/rpython/jit/metainterp/test/support.py 
b/rpython/jit/metainterp/test/support.py
--- a/rpython/jit/metainterp/test/support.py
+++ b/rpython/jit/metainterp/test/support.py
@@ -132,6 +132,7 @@
     metainterp_sd = pyjitpl.MetaInterpStaticData(cw.cpu, opt)
     stats.metainterp_sd = metainterp_sd
     metainterp_sd.finish_setup(cw)
+    metainterp_sd.finish_setup_descrs()
 
     [jitdriver_sd] = metainterp_sd.jitdrivers_sd
     metainterp = pyjitpl.MetaInterp(metainterp_sd, jitdriver_sd)
diff --git a/rpython/jit/metainterp/warmspot.py 
b/rpython/jit/metainterp/warmspot.py
--- a/rpython/jit/metainterp/warmspot.py
+++ b/rpython/jit/metainterp/warmspot.py
@@ -277,6 +277,7 @@
         for vinfo in vinfos:
             if vinfo is not None:
                 vinfo.finish()
+        self.metainterp_sd.finish_setup_descrs()
         if self.cpu.translate_support_code:
             self.annhelper.finish()
 
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to