Author: Remi Meier <[email protected]>
Branch: stmgc-c4
Changeset: r65374:add171e74fe2
Date: 2013-07-12 08:29 +0200
http://bitbucket.org/pypy/pypy/changeset/add171e74fe2/
Log: remove R2W for now; introduce is_stm on GcRootMap
diff --git a/rpython/jit/backend/llsupport/gc.py
b/rpython/jit/backend/llsupport/gc.py
--- a/rpython/jit/backend/llsupport/gc.py
+++ b/rpython/jit/backend/llsupport/gc.py
@@ -250,6 +250,7 @@
class GcRootMap_asmgcc(object):
is_shadow_stack = False
+ is_stm = False
def __init__(self, gcdescr):
pass
@@ -259,7 +260,8 @@
class GcRootMap_shadowstack(object):
is_shadow_stack = True
-
+ is_stm = False
+
def __init__(self, gcdescr):
pass
@@ -271,8 +273,9 @@
return rffi.cast(lltype.Signed, rst_addr)
class GcRootMap_stm(object):
- is_shadow_stack = True # XXX: should it have an is_stmgc?
-
+ is_shadow_stack = True
+ is_stm = True
+
def __init__(self, gcdescr):
pass
@@ -535,7 +538,6 @@
def _setup_barriers_for_stm(self):
self.P2Rdescr = STMReadBarrierDescr(self, 'P2R')
self.P2Wdescr = STMWriteBarrierDescr(self, 'P2W')
- self.R2Wdescr = STMWriteBarrierDescr(self, 'R2W')
self.write_barrier_descr = "wbdescr: do not use"
#
@specialize.argtype(0)
diff --git a/rpython/jit/backend/llsupport/stmrewrite.py
b/rpython/jit/backend/llsupport/stmrewrite.py
--- a/rpython/jit/backend/llsupport/stmrewrite.py
+++ b/rpython/jit/backend/llsupport/stmrewrite.py
@@ -34,7 +34,7 @@
'P': {'R': self.gc_ll_descr.P2Rdescr,
'W': self.gc_ll_descr.P2Wdescr,
},
- 'R': {'W': self.gc_ll_descr.R2Wdescr,
+ 'R': {'W': self.gc_ll_descr.P2Wdescr,
},
'W': {},
}
diff --git a/rpython/jit/backend/llsupport/test/test_stmrewrite.py
b/rpython/jit/backend/llsupport/test/test_stmrewrite.py
--- a/rpython/jit/backend/llsupport/test/test_stmrewrite.py
+++ b/rpython/jit/backend/llsupport/test/test_stmrewrite.py
@@ -250,7 +250,7 @@
cond_call_stm_b(p1, descr=P2Rdescr)
i1 = getfield_gc(p1, descr=tydescr)
i2 = int_add(i1, 1)
- cond_call_stm_b(p1, descr=R2Wdescr)
+ cond_call_stm_b(p1, descr=P2Wdescr)
setfield_gc(p1, i2, descr=tydescr)
jump(p1)
""")
diff --git a/rpython/jit/backend/x86/assembler.py
b/rpython/jit/backend/x86/assembler.py
--- a/rpython/jit/backend/x86/assembler.py
+++ b/rpython/jit/backend/x86/assembler.py
@@ -1020,12 +1020,16 @@
def _reload_frame_if_necessary(self, mc, align_stack=False):
gcrootmap = self.cpu.gc_ll_descr.gcrootmap
- if gcrootmap:
- if gcrootmap.is_shadow_stack:
- rst = gcrootmap.get_root_stack_top_addr()
- mc.MOV(ecx, heap(rst))
- mc.MOV(ebp, mem(ecx, -WORD))
- wbdescr = self.cpu.gc_ll_descr.write_barrier_descr
+ if gcrootmap and gcrootmap.is_shadow_stack:
+ rst = gcrootmap.get_root_stack_top_addr()
+ mc.MOV(ecx, heap(rst))
+ mc.MOV(ebp, mem(ecx, -WORD))
+
+ if gcrootmap and gcrootmap.is_stm:
+ wbdescr = self.cpu.gc_ll_descr.P2Wdescr
+ else:
+ wbdescr = self.cpu.gc_ll_descr.write_barrier_descr
+
if gcrootmap and wbdescr:
# frame never uses card marking, so we enforce this is not
# an array
_______________________________________________
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit