Manual forward port of 64962 - use PyObject_HashNotImplemented as a tp_hash level indicator that the default hash implementation has not been inherited
diff --git a/Objects/object.c b/Objects/object.c
index 85bb850..ff16994 100644
--- a/Objects/object.c
+++ b/Objects/object.c
@@ -781,17 +781,22 @@
 #endif
 }
 
+long
+PyObject_HashNotImplemented(PyObject *v)
+{
+	PyErr_Format(PyExc_TypeError, "unhashable type: '%.200s'",
+		     Py_TYPE(v)->tp_name);
+	return -1;
+}
 
 long
 PyObject_Hash(PyObject *v)
 {
-	PyTypeObject *tp = v->ob_type;
+	PyTypeObject *tp = Py_TYPE(v);
 	if (tp->tp_hash != NULL)
 		return (*tp->tp_hash)(v);
 	/* Otherwise, the object can't be hashed */
-	PyErr_Format(PyExc_TypeError, "unhashable type: '%.200s'",
-		     v->ob_type->tp_name);
-	return -1;
+	return PyObject_HashNotImplemented(v);
 }
 
 PyObject *