Author: Ronan Lamy <[email protected]>
Branch: framestate
Changeset: r74693:dc249e852d88
Date: 2014-11-22 22:54 +0000
http://bitbucket.org/pypy/pypy/changeset/dc249e852d88/

Log:    wip

diff --git a/rpython/flowspace/bytecode.py b/rpython/flowspace/bytecode.py
--- a/rpython/flowspace/bytecode.py
+++ b/rpython/flowspace/bytecode.py
@@ -142,23 +142,27 @@
 
     def _add_jump(self, i, target):
         self.cuts.append(i + 1)
-        self.pending_cuts.append(target)
+        if target <= self.offset:
+            j = self.pos_map[target]
+            self.cuts.append(j)
+        else:
+            self.pending_cuts.append(target)
 
     def build_flow(self, code):
         contents = []
         offsets = []
         self.pending_cuts = []
-        pos_map = {}
+        self.pos_map = {}
         self.cuts = []
         i = 0
         for instr in self._iter_instr(code):
             offsets.append(self.offset)
-            pos_map[self.offset] = i
+            self.pos_map[self.offset] = i
             contents.append(instr)
             if instr.has_jump():
                 self._add_jump(i, instr.arg)
             i += 1
-        self.cuts.extend([pos_map[n] for n in self.pending_cuts])
+        self.cuts.extend([self.pos_map[n] for n in self.pending_cuts])
         self.cuts.sort()
         pendingblocks = [SimpleBlock(contents[i:j])
                 for i, j in zip([0] + self.cuts, self.cuts + 
[len(code.co_code)])]
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to