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