[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