Intern __name__.
diff --git a/Objects/funcobject.c b/Objects/funcobject.c
index c414bca..76acf98 100644
--- a/Objects/funcobject.c
+++ b/Objects/funcobject.c
@@ -11,6 +11,7 @@
 {
 	PyFunctionObject *op = PyObject_GC_New(PyFunctionObject,
 					    &PyFunction_Type);
+	static PyObject *__name__ = 0;
 	if (op != NULL) {
 		PyObject *doc;
 		PyObject *consts;
@@ -40,7 +41,14 @@
 		/* __module__: If module name is in globals, use it.
 		   Otherwise, use None.
 		*/
-		module = PyDict_GetItemString(globals, "__name__");
+		if (!__name__) {
+			__name__ = PyString_InternFromString("__name__");
+			if (!__name__) {
+				Py_DECREF(op);
+				return NULL;
+			}
+		}
+		module = PyDict_GetItem(globals, __name__);
 		if (module) {
 		    Py_INCREF(module);
 		    op->func_module = module;