[pypy-svn] r74383 - pypy/trunk/pypy/module/cpyext
afa at codespeak.net
afa at codespeak.net
Wed May 5 19:43:25 CEST 2010
Author: afa
Date: Wed May 5 19:43:23 2010
New Revision: 74383
Modified:
pypy/trunk/pypy/module/cpyext/methodobject.py
pypy/trunk/pypy/module/cpyext/object.py
pypy/trunk/pypy/module/cpyext/pyobject.py
pypy/trunk/pypy/module/cpyext/typeobject.py
Log:
Remove references to "state" where it is not necessary.
Now only pyobject.py and state.py reference the r2w & w2r dictionaries
Modified: pypy/trunk/pypy/module/cpyext/methodobject.py
==============================================================================
--- pypy/trunk/pypy/module/cpyext/methodobject.py (original)
+++ pypy/trunk/pypy/module/cpyext/methodobject.py Wed May 5 19:43:23 2010
@@ -13,7 +13,6 @@
generic_cpy_call, cpython_api, PyObject, cpython_struct, METH_KEYWORDS,
METH_O, CONST_STRING, METH_CLASS, METH_STATIC, METH_COEXIST, METH_NOARGS,
METH_VARARGS, build_type_checkers, PyObjectFields, bootstrap_function)
-from pypy.module.cpyext.state import State
from pypy.module.cpyext.pyerrors import PyErr_Occurred
from pypy.rlib.objectmodel import we_are_translated
from pypy.objspace.std.tupleobject import W_TupleObject
Modified: pypy/trunk/pypy/module/cpyext/object.py
==============================================================================
--- pypy/trunk/pypy/module/cpyext/object.py (original)
+++ pypy/trunk/pypy/module/cpyext/object.py Wed May 5 19:43:23 2010
@@ -4,7 +4,6 @@
Py_LT, Py_LE, Py_EQ, Py_NE, Py_GT, Py_GE, CONST_STRING
from pypy.module.cpyext.pyobject import PyObject, PyObjectP, make_ref, from_ref
from pypy.module.cpyext.pyobject import Py_IncRef, Py_DecRef
-from pypy.module.cpyext.state import State
from pypy.module.cpyext.typeobject import PyTypeObjectPtr, W_PyCTypeObject
from pypy.module.cpyext.pyerrors import PyErr_NoMemory, PyErr_BadInternalCall
from pypy.objspace.std.objectobject import W_ObjectObject
Modified: pypy/trunk/pypy/module/cpyext/pyobject.py
==============================================================================
--- pypy/trunk/pypy/module/cpyext/pyobject.py (original)
+++ pypy/trunk/pypy/module/cpyext/pyobject.py Wed May 5 19:43:23 2010
@@ -186,7 +186,8 @@
assert ptr not in state.py_objects_r2w
assert ptr not in state.borrowed_objects
state.py_objects_w2r[w_obj] = py_obj
- state.py_objects_r2w[ptr] = w_obj
+ if ptr: # init_typeobject() bootstraps with NULL references
+ state.py_objects_r2w[ptr] = w_obj
if borrowed:
state.borrowed_objects[ptr] = None
Modified: pypy/trunk/pypy/module/cpyext/typeobject.py
==============================================================================
--- pypy/trunk/pypy/module/cpyext/typeobject.py (original)
+++ pypy/trunk/pypy/module/cpyext/typeobject.py Wed May 5 19:43:23 2010
@@ -106,7 +106,6 @@
def update_all_slots(space, w_obj, pto):
# XXX fill slots in pto
- state = space.fromcache(State)
for method_name, slot_name, slot_func, _, _, _ in slotdefs:
w_descr = space.lookup(w_obj, method_name)
if w_descr is None:
@@ -135,7 +134,6 @@
def add_operators(space, dict_w, pto):
# XXX support PyObject_HashNotImplemented
- state = space.fromcache(State)
for method_name, slot_name, _, wrapper_func, wrapper_func_kwds, doc in slotdefs:
if method_name in dict_w:
continue
@@ -341,10 +339,9 @@
# - tuple.tp_bases is a tuple
# insert null placeholders to please make_ref()
- state = space.fromcache(State)
- state.py_objects_w2r[space.w_type] = lltype.nullptr(PyObject.TO)
- state.py_objects_w2r[space.w_object] = lltype.nullptr(PyObject.TO)
- state.py_objects_w2r[space.w_tuple] = lltype.nullptr(PyObject.TO)
+ track_reference(space, lltype.nullptr(PyObject.TO), space.w_type)
+ track_reference(space, lltype.nullptr(PyObject.TO), space.w_object)
+ track_reference(space, lltype.nullptr(PyObject.TO), space.w_tuple)
# create the objects
py_type = create_ref(space, space.w_type)
@@ -428,7 +425,6 @@
@cpython_api([PyObject], lltype.Void, external=False)
def type_dealloc(space, obj):
- state = space.fromcache(State)
obj_pto = rffi.cast(PyTypeObjectPtr, obj)
type_pto = obj.c_ob_type
base_pyo = rffi.cast(PyObject, obj_pto.c_tp_base)
More information about the Pypy-commit
mailing list