Author: Armin Rigo <[email protected]>
Branch: shadowstack-perf-2
Changeset: r90540:6f2c12b6a329
Date: 2017-03-04 18:37 +0100
http://bitbucket.org/pypy/pypy/changeset/6f2c12b6a329/

Log:    Do insert_empty_startblock() earlier to avoid mutating the graph at
        an unexpected point (and also, do it only if needed)

diff --git a/rpython/memory/gctransform/shadowcolor.py 
b/rpython/memory/gctransform/shadowcolor.py
--- a/rpython/memory/gctransform/shadowcolor.py
+++ b/rpython/memory/gctransform/shadowcolor.py
@@ -20,6 +20,10 @@
     of the 'pending_pred', which is a list of (block, var) tuples.
     """
     entrymap = mkentrymap(graph)
+    if len(entrymap[graph.startblock]) != 1:
+        insert_empty_startblock(graph)
+        entrymap = mkentrymap(graph)
+
     pred = set([v for block, v in pending_pred])
 
     def add(block, v):
@@ -233,8 +237,9 @@
     if not regalloc:
         return
 
-    insert_empty_startblock(graph)
     entrymap = mkentrymap(graph)
+    assert len(entrymap[graph.startblock]) == 1
+
     inputvars = {}    # {inputvar: (its block, its index in inputargs)}
     for block in graph.iterblocks():
         for i, v in enumerate(block.inputargs):
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to