[pypy-commit] pypy stmgc-c4: satisfy some tests

Raemi noreply at buildbot.pypy.org
Mon Jul 15 12:18:05 CEST 2013


Author: Remi Meier <remi.meier at gmail.com>
Branch: stmgc-c4
Changeset: r65401:d11b7c7058b0
Date: 2013-07-15 12:17 +0200
http://bitbucket.org/pypy/pypy/changeset/d11b7c7058b0/

Log:	satisfy some tests

diff --git a/rpython/jit/backend/llsupport/test/zrpy_gc_test.py b/rpython/jit/backend/llsupport/test/zrpy_gc_test.py
--- a/rpython/jit/backend/llsupport/test/zrpy_gc_test.py
+++ b/rpython/jit/backend/llsupport/test/zrpy_gc_test.py
@@ -75,11 +75,18 @@
     from rpython.translator.c import genc
     #
     t = TranslationContext()
-    t.config.translation.gc = gc
+    gcrootfinder = kwds['gcrootfinder']
+    if gcrootfinder == 'stm':
+        t.config.translation.stm = True
+        t.config.translation.gc = 'stmgc'
+    else:
+        t.config.translation.gc = gc
+    #
     if gc != 'boehm':
         t.config.translation.gcremovetypeptr = True
     for name, value in kwds.items():
         setattr(t.config.translation, name, value)
+
     ann = t.buildannotator()
     ann.build_types(f, [s_list_of_strings], main_entry_point=True)
     t.buildrtyper().specialize()
diff --git a/rpython/jit/backend/test/runner_test.py b/rpython/jit/backend/test/runner_test.py
--- a/rpython/jit/backend/test/runner_test.py
+++ b/rpython/jit/backend/test/runner_test.py
@@ -2188,7 +2188,7 @@
             operations = [
                 ResOperation(rop.COND_CALL_GC_WB, [p0, ConstInt(0)], None,
                              descr=WriteBarrierDescr()),
-                ResOperation(rop.FINISH, [p0], None, descr=BasicFailDescr(1))
+                ResOperation(rop.FINISH, [p0], None, descr=BasicFinalDescr(0))
                 ]
             inputargs = [p0]
             looptoken = JitCellToken()
@@ -4246,10 +4246,9 @@
 class WBDescrForTests(AbstractDescr):
     returns_modified_object = False
     b_slowpath = (0, 0, 0, 0)
-    def get_b_slowpath(self, c1, c2):
-        return self.b_slowpath[c1+2*c2]
-    def set_b_slowpath(self, c1, c2, addr):
-        i = c1+2*c2
-        self.b_slowpath = (self.b_slowpath[:i] + (addr,) +
-                            self.b_slowpath[i+1:])
+    def get_b_slowpath(self, c1):
+        return self.b_slowpath[c1]
+    def set_b_slowpath(self, c1, addr):
+        self.b_slowpath = (self.b_slowpath[:c1] + (addr,) +
+                            self.b_slowpath[c1+1:])
         
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
@@ -1032,19 +1032,22 @@
         cb.emit_no_collect()
 
     def _reload_frame_if_necessary(self, mc, align_stack=False):
-        gcrootmap = self.cpu.gc_ll_descr.gcrootmap
+        gc_ll_descr = self.cpu.gc_ll_descr
+        gcrootmap = gc_ll_descr.gcrootmap
         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
+            if not hasattr(gc_ll_descr, 'P2Wdescr'):
+                raise Exception("unreachable code")
+            wbdescr = gc_ll_descr.P2Wdescr
             self._stm_barrier_fastpath(mc, wbdescr, [ebp], is_frame=True,
                                        align_stack=align_stack)
             return
 
-        wbdescr = self.cpu.gc_ll_descr.write_barrier_descr
+        wbdescr = gc_ll_descr.write_barrier_descr
         if gcrootmap and wbdescr:
             # frame never uses card marking, so we enforce this is not
             # an array
diff --git a/rpython/jit/backend/x86/regalloc.py b/rpython/jit/backend/x86/regalloc.py
--- a/rpython/jit/backend/x86/regalloc.py
+++ b/rpython/jit/backend/x86/regalloc.py
@@ -825,7 +825,7 @@
 
     def consider_call_malloc_nursery_varsize_frame(self, op):
         gc_ll_descr = self.assembler.cpu.gc_ll_descr
-        assert gc_ll_descr.max_size_of_young_obj is not None
+        assert gc_ll_descr.get_malloc_slowpath_addr() is not None
         # ^^^ if this returns None, don't translate the rest of this function
         #
         size_box = op.getarg(0)
@@ -850,10 +850,8 @@
 
     def consider_call_malloc_nursery_varsize(self, op):
         gc_ll_descr = self.assembler.cpu.gc_ll_descr
-        assert gc_ll_descr.max_size_of_young_obj is not None
-        # ^^^ if this returns None, don't translate the rest of this function
-        #
-        if not hasattr(gc_ll_descr, 'max_size_of_young_obj'):
+        if not hasattr(gc_ll_descr, 'max_size_of_young_obj') \
+          or gc_ll_descr.max_size_of_young_obj is None:
             raise Exception("unreachable code")
             # for boehm, this function should never be called
         arraydescr = op.getdescr()
diff --git a/rpython/jit/backend/x86/test/test_zrpy_gc.py b/rpython/jit/backend/x86/test/test_zrpy_gc.py
--- a/rpython/jit/backend/x86/test/test_zrpy_gc.py
+++ b/rpython/jit/backend/x86/test/test_zrpy_gc.py
@@ -1,5 +1,9 @@
 from rpython.jit.backend.llsupport.test.zrpy_gc_test import CompileFrameworkTests
 
 
+class TestSTMShadowStack(CompileFrameworkTests):
+    gcrootfinder = "stm"
+
+
 class TestShadowStack(CompileFrameworkTests):
     gcrootfinder = "shadowstack"
diff --git a/rpython/translator/backendopt/graphanalyze.py b/rpython/translator/backendopt/graphanalyze.py
--- a/rpython/translator/backendopt/graphanalyze.py
+++ b/rpython/translator/backendopt/graphanalyze.py
@@ -1,5 +1,6 @@
 from rpython.translator.simplify import get_graph, get_funcobj
 from rpython.tool.algo.unionfind import UnionFind
+from rpython.rtyper.lltypesystem import lltype
 
 
 class GraphAnalyzer(object):


More information about the pypy-commit mailing list