[pypy-svn] pypy jit-virtual_state: dont catch more than intended

hakanardo commits-noreply at bitbucket.org
Mon Feb 14 20:57:36 CET 2011


Author: Hakan Ardo <hakan at debian.org>
Branch: jit-virtual_state
Changeset: r41926:7882fb12b3d9
Date: 2011-02-14 20:57 +0100
http://bitbucket.org/pypy/pypy/changeset/7882fb12b3d9/

Log:	dont catch more than intended

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
@@ -664,6 +664,11 @@
                         try:
                             self.inline(sh.operations, sh.inputargs,
                                         op.getarglist())
+                        except InvalidLoop:
+                            debug_print("Inlining failed unexpectedly",
+                                        "jumping to preamble instead")
+                            self.emit_operation(op)
+                        else:
                             jumpop = self.optimizer.newoperations.pop()
                             assert jumpop.getopnum() == rop.JUMP
                             for guard in extra_guards:
@@ -672,10 +677,6 @@
                                 guard.setdescr(descr)
                                 self.emit_operation(guard)
                             self.optimizer.newoperations.append(jumpop)
-                        except InvalidLoop:
-                            debug_print("Inlining failed unexpectedly",
-                                        "jumping to preamble instead")
-                            self.emit_operation(op)
                         return
                 retraced_count = len(short)
                 if descr.failed_states:


More information about the Pypy-commit mailing list