[pypy-commit] pypy gc-minimark-pinning: a branch to experiment with pinning
fijal
noreply at buildbot.pypy.org
Thu Apr 12 14:15:49 CEST 2012
Author: Maciej Fijalkowski <fijall at gmail.com>
Branch: gc-minimark-pinning
Changeset: r54303:cb0a5d8aa8af
Date: 2012-04-12 13:52 +0200
http://bitbucket.org/pypy/pypy/changeset/cb0a5d8aa8af/
Log: a branch to experiment with pinning
diff --git a/pypy/rlib/rgc.py b/pypy/rlib/rgc.py
--- a/pypy/rlib/rgc.py
+++ b/pypy/rlib/rgc.py
@@ -18,6 +18,24 @@
"""
pass
+def pin(obj):
+ pass
+
+def unpin(obj):
+ pass
+
+
+class pinned_object(object):
+ def __init__(self, obj):
+ self.obj = obj
+
+ def __enter__(self):
+ pin(self.obj)
+ return self
+
+ def __exit__(self, *args):
+ unpin(self.obj)
+
# ____________________________________________________________
# Annotation and specialization
diff --git a/pypy/rlib/test/test_rgc.py b/pypy/rlib/test/test_rgc.py
--- a/pypy/rlib/test/test_rgc.py
+++ b/pypy/rlib/test/test_rgc.py
@@ -171,3 +171,9 @@
x1 = X()
n = rgc.get_rpy_memory_usage(rgc.cast_instance_to_gcref(x1))
assert n >= 8 and n <= 64
+
+def test_pin_obj():
+ l = []
+ with rgc.pinned_object(l):
+ l.append(3)
+ assert l == [3]
More information about the pypy-commit
mailing list