Author: Armin Rigo <[email protected]>
Branch: cpyext-gc-support-2
Changeset: r81854:05cd68cd7259
Date: 2016-01-19 15:01 +0100
http://bitbucket.org/pypy/pypy/changeset/05cd68cd7259/
Log: updates
diff --git a/pypy/doc/discussion/rawrefcount.rst
b/pypy/doc/discussion/rawrefcount.rst
--- a/pypy/doc/discussion/rawrefcount.rst
+++ b/pypy/doc/discussion/rawrefcount.rst
@@ -67,8 +67,8 @@
Let P = list of links created with rawrefcount.create_link_pypy()
and O = list of links created with rawrefcount.create_link_pyobj().
The PyPy objects in the list O are all W_CPyExtPlaceHolderObject: all
-the data is in the PyObjects, and all references (if any) are regular
-CPython-like reference counts.
+the data is in the PyObjects, and all outsite references (if any) are
+in C, as "PyObject *" fields.
So, during the collection we do this about P links:
@@ -81,7 +81,7 @@
this:
for (p, ob) in P + O:
- if p is not surviving:
+ if p is not surviving: # even if 'ob' might be surviving
unlink p and ob
if ob->ob_refcnt == REFCNT_FROM_PYPY_LIGHT:
free(ob)
@@ -106,6 +106,11 @@
Further notes
-------------
+XXX
+XXX the rest is the ideal world, but as a first step, we'll look
+XXX for the minimal tweaks needed to adapt the existing cpyext
+XXX
+
For objects that are opaque in CPython, like <dict>, we always create
a PyPy object, and then when needed we make an empty PyObject and
attach it with create_link_pypy()/REFCNT_FROM_PYPY_LIGHT.
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit