[Zope3-checkins] CVS: Zope3/src/persistence - persistence.h:1.4 persistence.c:1.14

Jeremy Hylton jeremy@zope.com
Fri, 25 Apr 2003 15:02:36 -0400


Update of /cvs-repository/Zope3/src/persistence
In directory cvs.zope.org:/tmp/cvs-serv16613/src/persistence

Modified Files:
	persistence.h persistence.c 
Log Message:
Remove _p_serial from the PyPersist_HEAD.

Persistent objects still have an _p_serial attribute, but it is stored
in the instance dict for most objects.  If a specific class doesn't
have an instance dict, it must arrange to store _p_serial somewhere
else.  The BTrees store it in their object structs.

The change reduces the __basicsize__ of all persistent objects by 4
bytes, which saves 8 bytes in practice because of obmalloc rounding.

One consequence of this change is that objects don't have an _p_serial
== None at creation time.  Two tests depended on that.


=== Zope3/src/persistence/persistence.h 1.3 => 1.4 ===
--- Zope3/src/persistence/persistence.h:1.3	Fri Apr 25 12:39:37 2003
+++ Zope3/src/persistence/persistence.h	Fri Apr 25 15:02:35 2003
@@ -35,7 +35,6 @@
     PyObject_HEAD \
     PyObject *po_dm; \
     PyObject *po_oid; \
-    PyObject *po_serial; \
     int po_atime; \
     enum PyPersist_State po_state;
 


=== Zope3/src/persistence/persistence.c 1.13 => 1.14 ===
--- Zope3/src/persistence/persistence.c:1.13	Thu Apr 17 14:38:53 2003
+++ Zope3/src/persistence/persistence.c	Fri Apr 25 15:02:35 2003
@@ -621,7 +621,6 @@
 {
     Py_XDECREF(self->po_dm);
     Py_XDECREF(self->po_oid);
-    Py_XDECREF(self->po_serial);
     PyObject_GC_Del(self);
 }
 
@@ -638,7 +637,6 @@
     }
     VISIT(self->po_dm);
     VISIT(self->po_oid);
-    VISIT(self->po_serial);
 #undef VISIT
     return 0;
 }
@@ -648,10 +646,8 @@
 {
     Py_XDECREF(self->po_dm);
     Py_XDECREF(self->po_oid);
-    Py_XDECREF(self->po_serial);
     self->po_dm = NULL;
     self->po_oid = NULL;
-    self->po_serial = NULL;
     return 0;
 }
 
@@ -722,7 +718,6 @@
 static PyMemberDef persist_members[] = {
     {"_p_jar", T_OBJECT, offsetof(PyPersistObject, po_dm)},
     {"_p_oid", T_OBJECT, offsetof(PyPersistObject, po_oid)},
-    {"_p_serial", T_OBJECT, offsetof(PyPersistObject, po_serial)},
     {"_p_atime", T_INT, offsetof(PyPersistObject, po_atime)},
     {"_p_state", T_INT, offsetof(PyPersistObject, po_state), RO},
     {NULL}