Author: Armin Rigo <[email protected]>
Branch: cpyext-gc-support
Changeset: r80406:33900512eefb
Date: 2015-10-23 12:24 +0200
http://bitbucket.org/pypy/pypy/changeset/33900512eefb/
Log: more of the same
diff --git a/pypy/module/cpyext/dictobject.py b/pypy/module/cpyext/dictobject.py
--- a/pypy/module/cpyext/dictobject.py
+++ b/pypy/module/cpyext/dictobject.py
@@ -3,7 +3,6 @@
cpython_api, CANNOT_FAIL, build_type_checkers, Py_ssize_t,
Py_ssize_tP, CONST_STRING)
from pypy.module.cpyext.pyobject import PyObject, PyObjectP
-from pypy.module.cpyext.pyobject import RefcountState
from pypy.module.cpyext.pyerrors import PyErr_BadInternalCall
from pypy.interpreter.error import OperationError
from pypy.objspace.std.dictmultiobject import W_DictMultiObject
diff --git a/pypy/module/cpyext/object.py b/pypy/module/cpyext/object.py
--- a/pypy/module/cpyext/object.py
+++ b/pypy/module/cpyext/object.py
@@ -7,7 +7,7 @@
Py_GE, CONST_STRING, FILEP, fwrite)
from pypy.module.cpyext.pyobject import (
PyObject, PyObjectP, create_ref, from_pyobj, Py_IncRef, Py_DecRef,
- track_reference, get_typedescr, _Py_NewReference, RefcountState)
+ track_reference, get_typedescr, _Py_NewReference)
from pypy.module.cpyext.typeobject import PyTypeObjectPtr
from pypy.module.cpyext.pyerrors import PyErr_NoMemory, PyErr_BadInternalCall
from pypy.objspace.std.typeobject import W_TypeObject
diff --git a/pypy/module/cpyext/pyobject.py b/pypy/module/cpyext/pyobject.py
--- a/pypy/module/cpyext/pyobject.py
+++ b/pypy/module/cpyext/pyobject.py
@@ -23,7 +23,6 @@
print "ZZZ: make_typedescr(%r)" % (arg0,)
def get_typedescr(*args, **kwds):
ZZZ
-RefcountState = "ZZZ"
RRC_PERMANENT = 'P' # the link pyobj<->pypy is permanent
RRC_PERMANENT_LIGHT = 'p' # same, but tp_dealloc can be replaced with free()
diff --git a/pypy/module/cpyext/state.py b/pypy/module/cpyext/state.py
--- a/pypy/module/cpyext/state.py
+++ b/pypy/module/cpyext/state.py
@@ -75,11 +75,11 @@
"This function is called when the program really starts"
from pypy.module.cpyext.typeobject import setup_new_method_def
- from pypy.module.cpyext.pyobject import RefcountState
from pypy.module.cpyext.api import INIT_FUNCTIONS
setup_new_method_def(space)
if we_are_translated():
+ ZZZ
refcountstate = space.fromcache(RefcountState)
refcountstate.init_r2w_from_w2r()
rawrefcount.init(lambda ob: ZZZ)
diff --git a/pypy/module/cpyext/test/test_cpyext.py
b/pypy/module/cpyext/test/test_cpyext.py
--- a/pypy/module/cpyext/test/test_cpyext.py
+++ b/pypy/module/cpyext/test/test_cpyext.py
@@ -14,7 +14,7 @@
from rpython.tool.udir import udir
from pypy.module.cpyext import api
from pypy.module.cpyext.state import State
-from pypy.module.cpyext.pyobject import RefcountState, debug_collect
+from pypy.module.cpyext.pyobject import debug_collect
from pypy.module.cpyext.pyobject import Py_DecRef
from rpython.tool.identity_dict import identity_dict
from rpython.tool import leakfinder
@@ -112,6 +112,7 @@
@staticmethod
def cleanup_references(space):
+ ZZZ
state = space.fromcache(RefcountState)
import gc; gc.collect()
diff --git a/pypy/module/cpyext/test/test_dictobject.py
b/pypy/module/cpyext/test/test_dictobject.py
--- a/pypy/module/cpyext/test/test_dictobject.py
+++ b/pypy/module/cpyext/test/test_dictobject.py
@@ -1,7 +1,7 @@
from rpython.rtyper.lltypesystem import rffi, lltype
from pypy.module.cpyext.test.test_api import BaseApiTest
from pypy.module.cpyext.api import Py_ssize_tP, PyObjectP
-from pypy.module.cpyext.pyobject import make_ref, from_ref
+from pypy.module.cpyext.pyobject import from_pyobj
from pypy.interpreter.error import OperationError
class TestDictObject(BaseApiTest):
@@ -99,8 +99,8 @@
try:
w_copy = space.newdict()
while api.PyDict_Next(w_dict, ppos, pkey, pvalue):
- w_key = from_ref(space, pkey[0])
- w_value = from_ref(space, pvalue[0])
+ w_key = from_pyobj(space, pkey[0])
+ w_value = from_pyobj(space, pvalue[0])
space.setitem(w_copy, w_key, w_value)
finally:
lltype.free(ppos, flavor='raw')
@@ -125,11 +125,11 @@
try:
ppos[0] = 0
while api.PyDict_Next(w_dict, ppos, pkey, None):
- w_key = from_ref(space, pkey[0])
+ w_key = from_pyobj(space, pkey[0])
keys_w.append(w_key)
ppos[0] = 0
while api.PyDict_Next(w_dict, ppos, None, pvalue):
- w_value = from_ref(space, pvalue[0])
+ w_value = from_pyobj(space, pvalue[0])
values_w.append(w_value)
finally:
lltype.free(ppos, flavor='raw')
diff --git a/pypy/module/cpyext/test/test_funcobject.py
b/pypy/module/cpyext/test/test_funcobject.py
--- a/pypy/module/cpyext/test/test_funcobject.py
+++ b/pypy/module/cpyext/test/test_funcobject.py
@@ -1,7 +1,7 @@
from rpython.rtyper.lltypesystem import rffi, lltype
from pypy.module.cpyext.test.test_cpyext import AppTestCpythonExtensionBase
from pypy.module.cpyext.test.test_api import BaseApiTest
-from pypy.module.cpyext.pyobject import PyObject, make_ref, from_ref
+from pypy.module.cpyext.pyobject import PyObject, as_pyobj, from_pyobj
from pypy.module.cpyext.funcobject import (
PyFunctionObject, PyCodeObject, CODE_FLAGS)
from pypy.interpreter.function import Function, Method
@@ -15,12 +15,11 @@
def f(): pass
return f
""")
- ref = make_ref(space, w_function)
- assert (from_ref(space, rffi.cast(PyObject, ref.c_ob_type)) is
+ ref = as_pyobj(space, w_function)
+ assert (from_pyobj(space, rffi.cast(PyObject, ref.c_ob_type)) is
space.gettypeobject(Function.typedef))
assert "f" == space.unwrap(
- from_ref(space, rffi.cast(PyFunctionObject, ref).c_func_name))
- api.Py_DecRef(ref)
+ from_pyobj(space, rffi.cast(PyFunctionObject, ref).c_func_name))
def test_method(self, space, api):
w_method = space.appexec([], """():
@@ -48,13 +47,12 @@
w_code = api.PyFunction_GetCode(w_function)
assert w_code.co_name == "func"
- ref = make_ref(space, w_code)
- assert (from_ref(space, rffi.cast(PyObject, ref.c_ob_type)) is
+ ref = as_pyobj(space, w_code)
+ assert (from_pyobj(space, rffi.cast(PyObject, ref.c_ob_type)) is
space.gettypeobject(PyCode.typedef))
assert "func" == space.unwrap(
- from_ref(space, rffi.cast(PyCodeObject, ref).c_co_name))
+ from_pyobj(space, rffi.cast(PyCodeObject, ref).c_co_name))
assert 3 == rffi.cast(PyCodeObject, ref).c_co_argcount
- api.Py_DecRef(ref)
def test_co_flags(self, space, api):
def get_flags(signature, body="pass"):
@@ -62,9 +60,8 @@
def func(%s): %s
return func.__code__
""" % (signature, body))
- ref = make_ref(space, w_code)
+ ref = as_pyobj(space, w_code)
co_flags = rffi.cast(PyCodeObject, ref).c_co_flags
- api.Py_DecRef(ref)
return co_flags
assert get_flags("x") == CO_NESTED | CO_OPTIMIZED | CO_NEWLOCALS
assert get_flags("x", "exec x") == CO_NESTED | CO_NEWLOCALS
diff --git a/pypy/module/cpyext/test/test_methodobject.py
b/pypy/module/cpyext/test/test_methodobject.py
--- a/pypy/module/cpyext/test/test_methodobject.py
+++ b/pypy/module/cpyext/test/test_methodobject.py
@@ -2,7 +2,7 @@
from pypy.module.cpyext.test.test_cpyext import AppTestCpythonExtensionBase
from pypy.module.cpyext.methodobject import PyMethodDef
from pypy.module.cpyext.api import ApiFunction
-from pypy.module.cpyext.pyobject import PyObject, make_ref, Py_DecRef
+from pypy.module.cpyext.pyobject import PyObject, Py_DecRef
from pypy.module.cpyext.methodobject import (
PyDescr_NewMethod, PyCFunction_typedef)
from rpython.rtyper.lltypesystem import rffi, lltype
diff --git a/pypy/module/cpyext/test/test_pystate.py
b/pypy/module/cpyext/test/test_pystate.py
--- a/pypy/module/cpyext/test/test_pystate.py
+++ b/pypy/module/cpyext/test/test_pystate.py
@@ -2,7 +2,6 @@
from pypy.module.cpyext.test.test_api import BaseApiTest
from rpython.rtyper.lltypesystem.lltype import nullptr
from pypy.module.cpyext.pystate import PyInterpreterState, PyThreadState
-from pypy.module.cpyext.pyobject import from_ref
from rpython.rtyper.lltypesystem import lltype
from pypy.module.cpyext.test.test_cpyext import LeakCheckingTest,
freeze_refcnts
from pypy.module.cpyext.pystate import PyThreadState_Get,
PyInterpreterState_Head
diff --git a/pypy/module/cpyext/test/test_setobject.py
b/pypy/module/cpyext/test/test_setobject.py
--- a/pypy/module/cpyext/test/test_setobject.py
+++ b/pypy/module/cpyext/test/test_setobject.py
@@ -1,6 +1,6 @@
import py
-from pypy.module.cpyext.pyobject import PyObject, PyObjectP, make_ref, from_ref
+from pypy.module.cpyext.pyobject import PyObject, PyObjectP
from pypy.module.cpyext.test.test_api import BaseApiTest
from rpython.rtyper.lltypesystem import rffi, lltype
diff --git a/pypy/module/cpyext/test/test_traceback.py
b/pypy/module/cpyext/test/test_traceback.py
--- a/pypy/module/cpyext/test/test_traceback.py
+++ b/pypy/module/cpyext/test/test_traceback.py
@@ -1,6 +1,6 @@
from rpython.rtyper.lltypesystem import lltype, rffi
from pypy.module.cpyext.test.test_api import BaseApiTest
-from pypy.module.cpyext.pyobject import PyObject, make_ref, from_ref
+from pypy.module.cpyext.pyobject import PyObject, as_pyobj, from_pyobj
from pypy.module.cpyext.pytraceback import PyTracebackObject
from pypy.interpreter.pytraceback import PyTraceback
from pypy.interpreter.pyframe import PyFrame
@@ -14,9 +14,9 @@
except:
return sys.exc_info()[2]
""")
- py_obj = make_ref(space, w_traceback)
+ py_obj = as_pyobj(space, w_traceback)
py_traceback = rffi.cast(PyTracebackObject, py_obj)
- assert (from_ref(space, rffi.cast(PyObject, py_traceback.c_ob_type)) is
+ assert (from_pyobj(space, rffi.cast(PyObject, py_traceback.c_ob_type))
is
space.gettypeobject(PyTraceback.typedef))
traceback = space.interp_w(PyTraceback, w_traceback)
@@ -25,16 +25,14 @@
assert space.eq_w(space.getattr(w_traceback, space.wrap("tb_lasti")),
space.wrap(py_traceback.c_tb_lasti))
assert space.is_w(space.getattr(w_traceback, space.wrap("tb_frame")),
- from_ref(space, rffi.cast(PyObject,
+ from_pyobj(space, rffi.cast(PyObject,
py_traceback.c_tb_frame)))
while not space.is_w(w_traceback, space.w_None):
assert space.is_w(
w_traceback,
- from_ref(space, rffi.cast(PyObject, py_traceback)))
+ from_pyobj(space, rffi.cast(PyObject, py_traceback)))
w_traceback = space.getattr(w_traceback, space.wrap("tb_next"))
py_traceback = py_traceback.c_tb_next
assert lltype.normalizeptr(py_traceback) is None
-
- api.Py_DecRef(py_obj)
diff --git a/pypy/module/cpyext/test/test_typeobject.py
b/pypy/module/cpyext/test/test_typeobject.py
--- a/pypy/module/cpyext/test/test_typeobject.py
+++ b/pypy/module/cpyext/test/test_typeobject.py
@@ -1,7 +1,7 @@
from rpython.rtyper.lltypesystem import rffi, lltype
from pypy.module.cpyext.test.test_cpyext import AppTestCpythonExtensionBase
from pypy.module.cpyext.test.test_api import BaseApiTest
-from pypy.module.cpyext.pyobject import PyObject, make_ref, from_ref
+from pypy.module.cpyext.pyobject import PyObject, as_pyobj, from_pyobj
from pypy.module.cpyext.typeobject import PyTypeObjectPtr
import py
@@ -332,13 +332,11 @@
pass
return A
""")
- ref = make_ref(space, w_class)
+ ref = as_pyobj(space, w_class)
py_type = rffi.cast(PyTypeObjectPtr, ref)
assert py_type.c_tp_alloc
- assert from_ref(space, py_type.c_tp_mro).wrappeditems is w_class.mro_w
-
- api.Py_DecRef(ref)
+ assert from_pyobj(space, py_type.c_tp_mro).wrappeditems is
w_class.mro_w
def test_multiple_inheritance(self, space, api):
w_class = space.appexec([], """():
@@ -350,8 +348,7 @@
pass
return C
""")
- ref = make_ref(space, w_class)
- api.Py_DecRef(ref)
+ ref = as_pyobj(space, w_class)
def test_lookup(self, space, api):
w_type = space.w_str
@@ -366,8 +363,7 @@
w_obj = space.appexec([], """():
import _numpypy
return _numpypy.multiarray.dtype('int64').type(2)""")
- ref = make_ref(space, w_obj)
- api.Py_DecRef(ref)
+ ref = as_pyobj(space, w_obj)
class AppTestSlots(AppTestCpythonExtensionBase):
def test_some_slots(self):
diff --git a/pypy/module/cpyext/test/test_unicodeobject.py
b/pypy/module/cpyext/test/test_unicodeobject.py
--- a/pypy/module/cpyext/test/test_unicodeobject.py
+++ b/pypy/module/cpyext/test/test_unicodeobject.py
@@ -4,7 +4,7 @@
from pypy.module.cpyext.unicodeobject import (
Py_UNICODE, PyUnicodeObject, new_empty_unicode)
from pypy.module.cpyext.api import PyObjectP, PyObject
-from pypy.module.cpyext.pyobject import Py_DecRef, from_ref
+from pypy.module.cpyext.pyobject import Py_DecRef, from_pyobj
from rpython.rtyper.lltypesystem import rffi, lltype
import sys, py
@@ -147,7 +147,7 @@
assert space.unwrap(w_res) == u'sp�m'
res = api.PyUnicode_FromStringAndSize(s, 4)
- w_res = from_ref(space, res)
+ w_res = from_pyobj(space, res)
api.Py_DecRef(res)
assert space.unwrap(w_res) == u'sp�'
rffi.free_charp(s)
diff --git a/pypy/module/cpyext/typeobject.py b/pypy/module/cpyext/typeobject.py
--- a/pypy/module/cpyext/typeobject.py
+++ b/pypy/module/cpyext/typeobject.py
@@ -22,7 +22,7 @@
from pypy.module.cpyext.pyobject import (
PyObject, create_ref, get_typedescr, from_pyobj, as_pyobj,
setup_class_for_cpyext, get_pyobj_and_incref, get_pyobj_and_xincref,
- track_reference, RefcountState, Py_DecRef, RRC_PERMANENT)
+ track_reference, Py_DecRef, RRC_PERMANENT)
from pypy.module.cpyext.slotdefs import (
slotdefs_for_tp_slots, slotdefs_for_wrappers, get_slot_tp_function)
from pypy.module.cpyext.state import State
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit