Author: Armin Rigo <ar...@tunes.org>
Branch: shadowstack-perf
Changeset: r46027:377300db5cab
Date: 2011-07-27 19:08 +0200
http://bitbucket.org/pypy/pypy/changeset/377300db5cab/

Log:    Found and fixed the bug.

diff --git a/pypy/rpython/memory/gctransform/shadowstack.py 
b/pypy/rpython/memory/gctransform/shadowstack.py
--- a/pypy/rpython/memory/gctransform/shadowstack.py
+++ b/pypy/rpython/memory/gctransform/shadowstack.py
@@ -366,18 +366,19 @@
             blocks_push_roots[graph.startblock] = 0
             blockstate[graph.startblock] = "start"
         #
-        # Now detect direct transitions from "dead" to "alive", and
+        # Now detect direct transitions from "dead" to "alive"/"stop", and
         # insert new "start" blocks along the links.  Similarly, detect
-        # direct transitions from "alive" to "dead" and put a "stop" block.
+        # direct transitions from "alive"/"start" to "dead" and put a
+        # "stop" block.
         for block in blockstate.keys():
             if blockstate[block] == "dead":
                 for link in block.exits:
-                    if blockstate[link.target] == "alive":
+                    if blockstate[link.target] in ("alive", "stop"):
                         newblock = insert_empty_block(gct.translator.annotator,
                                                       link)
                         blocks_push_roots[newblock] = 0
                         blockstate[newblock] = "start"
-            if blockstate[block] == "alive":
+            if blockstate[block] in ("alive", "start"):
                 for link in block.exits:
                     if blockstate[link.target] == "dead":
                         newblock = insert_empty_block(gct.translator.annotator,
_______________________________________________
pypy-commit mailing list
pypy-commit@python.org
http://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to