[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