[pypy-commit] pypy py3.6: hg merge 886d3fec1ad3 (step-by-step merging with default)

arigo pypy.commits at gmail.com
Mon Jul 1 07:54:05 EDT 2019


Author: Armin Rigo <arigo at tunes.org>
Branch: py3.6
Changeset: r96895:8ea11eeeb117
Date: 2019-07-01 13:44 +0200
http://bitbucket.org/pypy/pypy/changeset/8ea11eeeb117/

Log:	hg merge 886d3fec1ad3 (step-by-step merging with default)

diff --git a/pypy/module/cpyext/slotdefs.py b/pypy/module/cpyext/slotdefs.py
--- a/pypy/module/cpyext/slotdefs.py
+++ b/pypy/module/cpyext/slotdefs.py
@@ -833,8 +833,7 @@
     return slot_tp_descr_set
 
 
-missing_wrappers = ['wrap_indexargfunc', 'wrap_del']
-for name in missing_wrappers:
+def _make_missing_wrapper(name):
     assert name not in globals()
     class missing_wrapper(W_PyCWrapperObject):
         def call(self, space, w_self, __args__):
@@ -843,6 +842,10 @@
     missing_wrapper.__name__ = name
     globals()[name] = missing_wrapper
 
+missing_wrappers = ['wrap_indexargfunc', 'wrap_del']
+for name in missing_wrappers:
+    _make_missing_wrapper(name)
+
 def make_missing_slot(space, typedef, name, attr):
     return None
 
diff --git a/rpython/jit/backend/arm/assembler.py b/rpython/jit/backend/arm/assembler.py
--- a/rpython/jit/backend/arm/assembler.py
+++ b/rpython/jit/backend/arm/assembler.py
@@ -532,22 +532,26 @@
 
     def gen_shadowstack_header(self, gcrootmap):
         # lr = shadow stack top addr
-        # ip = *lr
+        # r4 = *lr
         rst = gcrootmap.get_root_stack_top_addr()
         self.mc.gen_load_int(r.lr.value, rst)
-        self.load_reg(self.mc, r.ip, r.lr)
-        # *ip = r.fp
-        self.store_reg(self.mc, r.fp, r.ip)
+        self.load_reg(self.mc, r.r4, r.lr)
+        # *r4 = 1
+        # the '1' is to benefit from the shadowstack 'is_minor' optimization
+        self.mc.gen_load_int(r.ip.value, 1)
+        self.store_reg(self.mc, r.ip, r.r4)
+        # *(r4+WORD) = r.fp
+        self.store_reg(self.mc, r.fp, r.r4, WORD)
         #
-        self.mc.ADD_ri(r.ip.value, r.ip.value, WORD)
-        # *lr = ip + WORD
-        self.store_reg(self.mc, r.ip, r.lr)
+        self.mc.ADD_ri(r.r4.value, r.r4.value, 2 * WORD)
+        # *lr = r4 + 2 * WORD
+        self.store_reg(self.mc, r.r4, r.lr)
 
     def gen_footer_shadowstack(self, gcrootmap, mc):
         rst = gcrootmap.get_root_stack_top_addr()
         mc.gen_load_int(r.ip.value, rst)
         self.load_reg(mc, r.r4, r.ip)
-        mc.SUB_ri(r.r4.value, r.r4.value, WORD)
+        mc.SUB_ri(r.r4.value, r.r4.value, 2 * WORD)
         self.store_reg(mc, r.r4, r.ip)
 
     def _dump(self, ops, type='loop'):


More information about the pypy-commit mailing list