Author: Hakan Ardo <ha...@debian.org>
Branch: jit-short_from_state
Changeset: r44737:5dda9e0ace7f
Date: 2011-06-06 13:22 +0200
http://bitbucket.org/pypy/pypy/changeset/5dda9e0ace7f/

Log:    make sure guards for a box are emited before the box is used

diff --git a/pypy/jit/metainterp/optimizeopt/unroll.py 
b/pypy/jit/metainterp/optimizeopt/unroll.py
--- a/pypy/jit/metainterp/optimizeopt/unroll.py
+++ b/pypy/jit/metainterp/optimizeopt/unroll.py
@@ -298,7 +298,7 @@
         
         for result, op in self.short_boxes.items():
             if op is not None:
-                for op in self.getvalue(result).make_guards(result):
+                if len(self.getvalue(result).make_guards(result)) > 0:
                     self.add_op_to_short(op, short, short_seen)
 
         self.optimizer.flush()
@@ -369,6 +369,10 @@
             guard = ResOperation(rop.GUARD_NO_OVERFLOW, [], None)
             self.add_op_to_short(guard, short, short_seen)
 
+        if op.result in self.short_boxes:
+            for guard in self.getvalue(op.result).make_guards(op.result):
+                self.add_op_to_short(guard, short, short_seen)
+
         return newop.result
         
     def import_box(self, box, inputargs, short, short_jumpargs,
_______________________________________________
pypy-commit mailing list
pypy-commit@python.org
http://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to