]> granicus.if.org Git - python/commitdiff
Improve stack depth computation for try/except and try/finally
authorJeremy Hylton <jeremy@alum.mit.edu>
Wed, 29 Aug 2001 22:27:14 +0000 (22:27 +0000)
committerJeremy Hylton <jeremy@alum.mit.edu>
Wed, 29 Aug 2001 22:27:14 +0000 (22:27 +0000)
Add CONTINUE_LOOP to the list of unconditional transfers

Lib/compiler/pyassem.py
Tools/compiler/compiler/pyassem.py

index 413a954afd078bdaa01efa1d903624d8915af0fe..dc016560690e1ed5225a79e230bc8a79d38b128f 100644 (file)
@@ -267,7 +267,7 @@ class Block:
         assert len(self.next) == 1, map(str, self.next)
 
     _uncond_transfer = ('RETURN_VALUE', 'RAISE_VARARGS',
-                        'JUMP_ABSOLUTE', 'JUMP_FORWARD')
+                        'JUMP_ABSOLUTE', 'JUMP_FORWARD', 'CONTINUE_LOOP')
 
     def pruneNext(self):
         """Remove bogus edge for unconditional transfers
@@ -753,6 +753,9 @@ class StackDepthTracker:
         'IMPORT_STAR': -1,
         'IMPORT_NAME': 0,
         'IMPORT_FROM': 1,
+        # close enough...
+        'SETUP_EXCEPT': 3,
+        'SETUP_FINALLY': 3,
         }
     # use pattern match
     patterns = [
index 413a954afd078bdaa01efa1d903624d8915af0fe..dc016560690e1ed5225a79e230bc8a79d38b128f 100644 (file)
@@ -267,7 +267,7 @@ class Block:
         assert len(self.next) == 1, map(str, self.next)
 
     _uncond_transfer = ('RETURN_VALUE', 'RAISE_VARARGS',
-                        'JUMP_ABSOLUTE', 'JUMP_FORWARD')
+                        'JUMP_ABSOLUTE', 'JUMP_FORWARD', 'CONTINUE_LOOP')
 
     def pruneNext(self):
         """Remove bogus edge for unconditional transfers
@@ -753,6 +753,9 @@ class StackDepthTracker:
         'IMPORT_STAR': -1,
         'IMPORT_NAME': 0,
         'IMPORT_FROM': 1,
+        # close enough...
+        'SETUP_EXCEPT': 3,
+        'SETUP_FINALLY': 3,
         }
     # use pattern match
     patterns = [