Author: Armin Rigo <[email protected]>
Branch: shadowstack-issue2722
Changeset: r96575:a203fe94e7b4
Date: 2019-05-08 12:44 +0200
http://bitbucket.org/pypy/pypy/changeset/a203fe94e7b4/
Log: Use rgc.increase_root_stack_depth() from PyPy (+tweaks)
diff --git a/pypy/module/sys/vm.py b/pypy/module/sys/vm.py
--- a/pypy/module/sys/vm.py
+++ b/pypy/module/sys/vm.py
@@ -51,10 +51,12 @@
value to N reserves N/1000 times 768KB of stack space.
"""
from rpython.rlib.rstack import _stack_set_length_fraction
+ from rpython.rlib.rgc import increase_root_stack_depth
if new_limit <= 0:
raise oefmt(space.w_ValueError, "recursion limit must be positive")
space.sys.recursionlimit = new_limit
_stack_set_length_fraction(new_limit * 0.001)
+ increase_root_stack_depth(int(new_limit * 0.001 * 163840))
def getrecursionlimit(space):
"""Return the last value set by setrecursionlimit().
diff --git a/rpython/memory/gctransform/framework.py
b/rpython/memory/gctransform/framework.py
--- a/rpython/memory/gctransform/framework.py
+++ b/rpython/memory/gctransform/framework.py
@@ -236,9 +236,6 @@
if root_walker.stacklet_support:
root_walker.need_stacklet_support(self, getfn)
- if hasattr(root_walker, 'build_increase_root_stack_depth_ptr'):
- root_walker.build_increase_root_stack_depth_ptr(getfn)
-
self.layoutbuilder.encode_type_shapes_now()
self.create_custom_trace_funcs(gcdata.gc, translator.rtyper)
@@ -575,6 +572,8 @@
self.move_out_of_nursery_ptr = getfn(GCClass.move_out_of_nursery,
[s_gc, SomeAddress()],
SomeAddress())
+ if hasattr(self.root_walker, 'build_increase_root_stack_depth_ptr'):
+ self.root_walker.build_increase_root_stack_depth_ptr(getfn)
def create_custom_trace_funcs(self, gc, rtyper):
@@ -1656,6 +1655,8 @@
hop.rename("same_as")
def gct_gc_increase_root_stack_depth(self, hop):
+ if not hasattr(self.root_walker, 'gc_increase_root_stack_depth_ptr'):
+ return
hop.genop("direct_call",
[self.root_walker.gc_increase_root_stack_depth_ptr,
hop.spaceop.args[0]])
diff --git a/rpython/rtyper/lltypesystem/lloperation.py
b/rpython/rtyper/lltypesystem/lloperation.py
--- a/rpython/rtyper/lltypesystem/lloperation.py
+++ b/rpython/rtyper/lltypesystem/lloperation.py
@@ -530,7 +530,7 @@
'gc_rawrefcount_next_dead': LLOp(),
'gc_move_out_of_nursery': LLOp(),
- 'gc_increase_root_stack_depth': LLOp(),
+ 'gc_increase_root_stack_depth': LLOp(canrun=True),
'gc_push_roots' : LLOp(), # temporary: list of roots to save
'gc_pop_roots' : LLOp(), # temporary: list of roots to restore
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit