Author: Devin Jeanpierre <[email protected]>
Branch: gc-forkfriendly
Changeset: r84519:8712615554d2
Date: 2016-05-18 22:58 -0700
http://bitbucket.org/pypy/pypy/changeset/8712615554d2/

Log:    Add incminimark_remoteheader support to a few important places.

        Actually it turns out my refactoring totally did not work and
        everything fails tests and translation anyway, so I'm going to have
        to go back and figure out what it is that I damaged. I was not
        running enough tests while I was working.

diff --git a/rpython/config/translationoption.py 
b/rpython/config/translationoption.py
--- a/rpython/config/translationoption.py
+++ b/rpython/config/translationoption.py
@@ -63,7 +63,8 @@
     # gc
     ChoiceOption("gc", "Garbage Collection Strategy",
                  ["boehm", "ref", "semispace", "statistics",
-                  "generation", "hybrid", "minimark",'incminimark', "none"],
+                  "generation", "hybrid", "minimark", "incminimark",
+                  "incminimark_remoteheader", "none"],
                   "ref", requires={
                      "ref": [("translation.rweakref", False), # XXX
                              ("translation.gctransformer", "ref")],
@@ -77,6 +78,7 @@
                                ("translation.gctransformer", "boehm")],
                      "minimark": [("translation.gctransformer", "framework")],
                      "incminimark": [("translation.gctransformer", 
"framework")],
+                     "incminimark_remoteheader": 
[("translation.gctransformer", "framework")],
                      },
                   cmdline="--gc"),
     ChoiceOption("gctransformer", "GC transformer that is used - internal",
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
@@ -361,7 +361,8 @@
         # we need the hybrid or minimark GC for rgc._make_sure_does_not_move()
         # to work.  'hybrid' could work but isn't tested with the JIT.
         if self.gcdescr.config.translation.gc not in ('minimark',
-                                                      'incminimark'):
+                                                      'incminimark',
+                                                      
'incminimark_remoteheader'):
             raise NotImplementedError("--gc=%s not implemented with the JIT" %
                                       (self.gcdescr.config.translation.gc,))
 
diff --git a/rpython/jit/metainterp/gc.py b/rpython/jit/metainterp/gc.py
--- a/rpython/jit/metainterp/gc.py
+++ b/rpython/jit/metainterp/gc.py
@@ -28,6 +28,9 @@
 class GC_incminimark(GcDescription):
     malloc_zero_filled = False
 
+class GC_incminimark_remoteheader(GC_incminimark):
+    pass
+
 
 def get_description(config):
     name = config.translation.gc
diff --git a/rpython/memory/gc/base.py b/rpython/memory/gc/base.py
--- a/rpython/memory/gc/base.py
+++ b/rpython/memory/gc/base.py
@@ -461,6 +461,7 @@
                "hybrid": "hybrid.HybridGC",
                "minimark" : "minimark.MiniMarkGC",
                "incminimark" : "incminimark.IncrementalMiniMarkGC",
+               "incminimark_remoteheader" : 
"incminimark_remoteheader.IncrementalMiniMarkRemoteHeaderGC",
                }
     try:
         modulename, classname = classes[config.translation.gc].split('.')
diff --git a/rpython/translator/c/test/test_newgc.py 
b/rpython/translator/c/test/test_newgc.py
--- a/rpython/translator/c/test/test_newgc.py
+++ b/rpython/translator/c/test/test_newgc.py
@@ -1660,6 +1660,10 @@
             assert res == 42
 
 
+class TestIncrementalMiniMarkRemoteHeadersGC(TestIncrementalMiniMarkGC):
+    gcpolicy = "incminimark_remoteheader"
+
+
 # ____________________________________________________________________
 
 class TaggedPointersTest(object):
@@ -1755,3 +1759,6 @@
 
 class TestIncrementalMiniMarkGCMostCompact(TaggedPointersTest, 
TestIncrementalMiniMarkGC):
     removetypeptr = True
+
+class TestIncrementalMiniMarkGCMostCompact(TaggedPointersTest, 
TestIncrementalMiniMarkRemoteHeadersGC):
+    removetypeptr = True
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to