Author: Armin Rigo <ar...@tunes.org> 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 pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit