diff --git a/core/includes/module.inc b/core/includes/module.inc
index 1a52a80..23284de 100644
--- a/core/includes/module.inc
+++ b/core/includes/module.inc
@@ -587,7 +587,11 @@ function module_disable($module_list, $disable_dependents = TRUE) {
  */
 function module_hook($module, $hook) {
   $function = $module . '_' . $hook;
-  if (function_exists($function)) {
+  static $hooklist = array();
+  if (!isset($hooklist[$module][$hook])) {
+    $hooklist[$module][$hook] = function_exists($module .'_'. $hook);
+  }
+  if ($hooklist[$module][$hook]) {
     return TRUE;
   }
   // If the hook implementation does not exist, check whether it may live in an
