Author: Armin Rigo <ar...@tunes.org> Branch: cpyext-ext Changeset: r83007:54e7251ae418 Date: 2016-03-13 11:03 +0100 http://bitbucket.org/pypy/pypy/changeset/54e7251ae418/
Log: Improve the debug checks. Shows an issue with string_alloc() in cpyext diff --git a/rpython/rlib/rawrefcount.py b/rpython/rlib/rawrefcount.py --- a/rpython/rlib/rawrefcount.py +++ b/rpython/rlib/rawrefcount.py @@ -27,12 +27,13 @@ """NOT_RPYTHON: set up rawrefcount with the GC. This is only used for tests; it should not be called at all during translation. """ - global _p_list, _o_list, _adr2pypy, _pypy2ob + global _p_list, _o_list, _adr2pypy, _pypy2ob, _ob_set global _d_list, _dealloc_trigger_callback _p_list = [] _o_list = [] _adr2pypy = [None] _pypy2ob = {} + _ob_set = set() _d_list = [] _dealloc_trigger_callback = dealloc_trigger_callback @@ -40,19 +41,23 @@ "NOT_RPYTHON: a link where the PyPy object contains some or all the data" #print 'create_link_pypy\n\t%s\n\t%s' % (p, ob) assert p not in _pypy2ob - #assert not ob.c_ob_pypy_link + assert ob._obj not in _ob_set + assert not ob.c_ob_pypy_link ob.c_ob_pypy_link = _build_pypy_link(p) _pypy2ob[p] = ob _p_list.append(ob) + _ob_set.add(ob._obj) def create_link_pyobj(p, ob): """NOT_RPYTHON: a link where the PyObject contains all the data. from_obj() will not work on this 'p'.""" #print 'create_link_pyobj\n\t%s\n\t%s' % (p, ob) assert p not in _pypy2ob - #assert not ob.c_ob_pypy_link + assert ob._obj not in _ob_set + assert not ob.c_ob_pypy_link ob.c_ob_pypy_link = _build_pypy_link(p) _o_list.append(ob) + _ob_set.add(ob._obj) def from_obj(OB_PTR_TYPE, p): "NOT_RPYTHON" _______________________________________________ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit