[pypy-commit] pypy nogil-unsafe-2: (arigo, fijal) fix the merge

fijal pypy.commits at gmail.com
Tue Jul 11 10:19:46 EDT 2017


Author: fijal
Branch: nogil-unsafe-2
Changeset: r91860:fe57861ced6a
Date: 2017-07-11 15:18 +0200
http://bitbucket.org/pypy/pypy/changeset/fe57861ced6a/

Log:	(arigo, fijal) fix the merge

diff --git a/rpython/memory/gctransform/shadowstack.py b/rpython/memory/gctransform/shadowstack.py
--- a/rpython/memory/gctransform/shadowstack.py
+++ b/rpython/memory/gctransform/shadowstack.py
@@ -174,7 +174,7 @@
 
         self.thread_setup = thread_setup
         self.thread_run_ptr = getfn(thread_run, [], annmodel.s_None,
-                                    inline=True, minimal_transform=False)
+                                    minimal_transform=False)
         self.thread_die_ptr = getfn(thread_die, [], annmodel.s_None,
                                     minimal_transform=False)
 
@@ -182,6 +182,16 @@
         from rpython.rlib import _stacklet_shadowstack
         _stacklet_shadowstack.complete_destrptr(gctransformer)
 
+    def postprocess_graph(self, gct, graph, any_inlining):
+        from rpython.memory.gctransform import shadowcolor
+        if any_inlining:
+            shadowcolor.postprocess_inlining(graph)
+        use_push_pop = shadowcolor.postprocess_graph(graph, gct.c_const_gcdata)
+        if use_push_pop and graph in gct.graphs_to_inline:
+            log.WARNING("%r is marked for later inlining, "
+                        "but is using push/pop roots.  Disabled" % (graph,))
+            del gct.graphs_to_inline[graph]
+
 
 class ShadowStackRootWalker(BaseRootWalker):
     def __init__(self, gctransformer):
diff --git a/rpython/translator/c/gc.py b/rpython/translator/c/gc.py
--- a/rpython/translator/c/gc.py
+++ b/rpython/translator/c/gc.py
@@ -446,7 +446,7 @@
     def enter_roots_frame(self, funcgen, (c_gcdata, c_numcolors)):
         numcolors = c_numcolors.value
         # XXX hard-code the field name here
-        gcpol_ss = '%s->gcd_inst_root_stack_top' % funcgen.expr(c_gcdata)
+        gcpol_ss = 'pypy_threadlocal.shadowstack_top'
         #
         yield ('typedef struct { void %s; } pypy_ss_t;'
                    % ', '.join(['*s%d' % i for i in range(numcolors)]))


More information about the pypy-commit mailing list