Index: Objects/typeobject.c
===================================================================
--- Objects/typeobject.c	(revision 63598)
+++ Objects/typeobject.c	(working copy)
@@ -20,10 +20,10 @@
 		 >> (8*sizeof(unsigned int) - MCACHE_SIZE_EXP))
 #define MCACHE_HASH_METHOD(type, name)                                  \
 		MCACHE_HASH((type)->tp_version_tag,                     \
-		            ((PyStringObject *)(name))->ob_shash)
+		            ((PyUnicodeObject *)(name))->hash)
 #define MCACHE_CACHEABLE_NAME(name)                                     \
-		PyString_CheckExact(name) &&                            \
-		PyString_GET_SIZE(name) <= MCACHE_MAX_ATTR_SIZE
+		PyUnicode_CheckExact(name) &&                            \
+		PyUnicode_GET_SIZE(name) <= MCACHE_MAX_ATTR_SIZE
 
 struct method_cache_entry {
 	unsigned int version;
Index: Objects/classobject.c
===================================================================
--- Objects/classobject.c	(revision 63598)
+++ Objects/classobject.c	(working copy)
@@ -502,7 +502,7 @@
 instancemethod_descr_get(PyObject *descr, PyObject *obj, PyObject *type) {
 	register PyObject *func = PyInstanceMethod_GET_FUNCTION(descr);
 	if (obj == NULL)
-		return func;
+		return Py_INCREF(func), func;
 	else
 		return PyMethod_New(func, obj);
 }
