Merged revisions 56467-56482 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/branches/p3yk

................
  r56477 | martin.v.loewis | 2007-07-21 09:04:38 +0200 (Sa, 21 Jul 2007) | 11 lines

  Merged revisions 56466-56476 via svnmerge from
  svn+ssh://pythondev@svn.python.org/python/trunk

  ........
    r56476 | martin.v.loewis | 2007-07-21 08:55:02 +0200 (Sa, 21 Jul 2007) | 4 lines

    PEP 3123: Provide forward compatibility with Python 3.0, while keeping
    backwards compatibility. Add Py_Refcnt, Py_Type, Py_Size, and
    PyVarObject_HEAD_INIT.
  ........
................
  r56478 | martin.v.loewis | 2007-07-21 09:47:23 +0200 (Sa, 21 Jul 2007) | 2 lines

  PEP 3123: Use proper C inheritance for PyObject.
................
  r56479 | martin.v.loewis | 2007-07-21 10:06:55 +0200 (Sa, 21 Jul 2007) | 3 lines

  Add longintrepr.h to Python.h, so that the compiler can
  see that PyFalse is really some kind of PyObject*.
................
  r56480 | martin.v.loewis | 2007-07-21 10:47:18 +0200 (Sa, 21 Jul 2007) | 2 lines

  Qualify SHIFT, MASK, BASE.
................
  r56482 | martin.v.loewis | 2007-07-21 19:10:57 +0200 (Sa, 21 Jul 2007) | 2 lines

  Correctly refer to _ob_next.
................
diff --git a/Python/ceval.c b/Python/ceval.c
index 6c69b08..0cdc165 100644
--- a/Python/ceval.c
+++ b/Python/ceval.c
@@ -3158,7 +3158,7 @@
 		*--sp = PyList_GET_ITEM(l, ll - j);
 	}
 	/* Resize the list. */
-	((PyListObject *)l)->ob_size = ll - argcntafter;
+	Py_Size(l) = ll - argcntafter;
 	Py_DECREF(it);
 	return 1;
 
@@ -3644,7 +3644,7 @@
 	}
 	if (argdefs != NULL) {
 		d = &PyTuple_GET_ITEM(argdefs, 0);
-		nd = ((PyTupleObject *)argdefs)->ob_size;
+		nd = Py_Size(argdefs);
 	}
 	return PyEval_EvalCodeEx(co, globals,
 				 (PyObject *)NULL, (*pp_stack)-n, na,
diff --git a/Python/import.c b/Python/import.c
index 5680abc..cd76fa2 100644
--- a/Python/import.c
+++ b/Python/import.c
@@ -3050,8 +3050,7 @@
 
 
 static PyTypeObject NullImporterType = {
-	PyObject_HEAD_INIT(NULL)
-	0,                         /*ob_size*/
+	PyVarObject_HEAD_INIT(NULL, 0)
 	"imp.NullImporter",        /*tp_name*/
 	sizeof(NullImporter),      /*tp_basicsize*/
 	0,                         /*tp_itemsize*/
diff --git a/Python/marshal.c b/Python/marshal.c
index 85926ed..0b275f0 100644
--- a/Python/marshal.c
+++ b/Python/marshal.c
@@ -150,7 +150,7 @@
 			PyLongObject *ob = (PyLongObject *)v;
 			PyErr_Clear();
 			w_byte(TYPE_LONG, p);
-			n = ob->ob_size;
+			n = Py_Size(ob);
 			w_long((long)n, p);
 			if (n < 0)
 				n = -n;
@@ -571,7 +571,7 @@
 				retval = NULL;
 				break;
 			}
-			ob->ob_size = n;
+			Py_Size(ob) = n;
 			for (i = 0; i < size; i++) {
 				int digit = r_short(p);
 				if (digit < 0) {
diff --git a/Python/symtable.c b/Python/symtable.c
index 121f3ee..fd902bf 100644
--- a/Python/symtable.c
+++ b/Python/symtable.c
@@ -119,8 +119,7 @@
 };
 
 PyTypeObject PySTEntry_Type = {
-	PyObject_HEAD_INIT(&PyType_Type)
-	0,
+	PyVarObject_HEAD_INIT(&PyType_Type, 0)
 	"symtable entry",
 	sizeof(PySTEntryObject),
 	0,
diff --git a/Python/traceback.c b/Python/traceback.c
index 4496c9f..370f3fd 100644
--- a/Python/traceback.c
+++ b/Python/traceback.c
@@ -52,8 +52,7 @@
 }
 
 PyTypeObject PyTraceBack_Type = {
-	PyObject_HEAD_INIT(&PyType_Type)
-	0,
+	PyVarObject_HEAD_INIT(&PyType_Type, 0)
 	"traceback",
 	sizeof(PyTracebackObject),
 	0,