[pypy-svn] r78596 - pypy/branch/jit-unroll-loops/pypy/jit/metainterp/optimizeopt

hakanardo at codespeak.net hakanardo at codespeak.net
Sun Oct 31 13:35:42 CET 2010


Author: hakanardo
Date: Sun Oct 31 13:35:36 2010
New Revision: 78596

Modified:
   pypy/branch/jit-unroll-loops/pypy/jit/metainterp/optimizeopt/heap.py
   pypy/branch/jit-unroll-loops/pypy/jit/metainterp/optimizeopt/optimizer.py
   pypy/branch/jit-unroll-loops/pypy/jit/metainterp/optimizeopt/unroll.py
Log:
(hakanardo, arigo) saner propagation of force_at_end_of_preamble

Modified: pypy/branch/jit-unroll-loops/pypy/jit/metainterp/optimizeopt/heap.py
==============================================================================
--- pypy/branch/jit-unroll-loops/pypy/jit/metainterp/optimizeopt/heap.py	(original)
+++ pypy/branch/jit-unroll-loops/pypy/jit/metainterp/optimizeopt/heap.py	Sun Oct 31 13:35:36 2010
@@ -151,7 +151,6 @@
 
     def force_at_end_of_preamble(self):
         self.force_all_lazy_setfields()
-        self.next_optimization.force_at_end_of_preamble()
         
     def force_lazy_setfield(self, descr, before_guard=False):
         try:

Modified: pypy/branch/jit-unroll-loops/pypy/jit/metainterp/optimizeopt/optimizer.py
==============================================================================
--- pypy/branch/jit-unroll-loops/pypy/jit/metainterp/optimizeopt/optimizer.py	(original)
+++ pypy/branch/jit-unroll-loops/pypy/jit/metainterp/optimizeopt/optimizer.py	Sun Oct 31 13:35:36 2010
@@ -194,8 +194,7 @@
         pass
 
     def force_at_end_of_preamble(self):
-        if self.next_optimization:
-            self.next_optimization.force_at_end_of_preamble()
+        pass
 
 class Optimizer(Optimization):
 
@@ -222,7 +221,14 @@
                 o.optimizer = self
                 o.setup()
         else:
+            optimizations = []
             self.first_optimization = self
+            
+        self.optimizations  = optimizations 
+
+    def force_at_end_of_preamble(self):
+        for o in self.optimizations:
+            o.force_at_end_of_preamble()
 
     def forget_numberings(self, virtualbox):
         self.metainterp_sd.profiler.count(jitprof.OPT_FORCINGS)

Modified: pypy/branch/jit-unroll-loops/pypy/jit/metainterp/optimizeopt/unroll.py
==============================================================================
--- pypy/branch/jit-unroll-loops/pypy/jit/metainterp/optimizeopt/unroll.py	(original)
+++ pypy/branch/jit-unroll-loops/pypy/jit/metainterp/optimizeopt/unroll.py	Sun Oct 31 13:35:36 2010
@@ -17,7 +17,7 @@
     def propagate_forward(self, op):
 
         if op.getopnum() == rop.JUMP:
-            self.force_at_end_of_preamble()
+            self.optimizer.force_at_end_of_preamble()
             loop = self.optimizer.loop
             assert op.getdescr() is loop.token
             loop.preamble.operations = self.optimizer.newoperations



More information about the Pypy-commit mailing list