move callable() here
diff --git a/Objects/object.c b/Objects/object.c
index 63c55ce..73353e4 100644
--- a/Objects/object.c
+++ b/Objects/object.c
@@ -386,6 +386,35 @@
 }
 
 
+/* Test whether an object can be called */
+
+int
+callable(x)
+	object *x;
+{
+	if (x == NULL)
+		return 0;
+	if (x->ob_type->tp_call != NULL ||
+	    is_funcobject(x) ||
+	    is_instancemethodobject(x) ||
+	    is_methodobject(x) ||
+	    is_classobject(x))
+		return 1;
+	if (is_instanceobject(x)) {
+		object *call = getattr(x, "__call__");
+		if (call == NULL) {
+			err_clear();
+			return 0;
+		}
+		/* Could test recursively but don't, for fear of endless
+		   recursion if some joker sets self.__call__ = self */
+		DECREF(call);
+		return 1;
+	}
+	return 0;
+}
+
+
 /*
 NoObject is usable as a non-NULL undefined value, used by the macro None.
 There is (and should be!) no way to create other objects of this type,