Index: modules/system/system.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/system/system.module,v
retrieving revision 1.928
diff -u -9 -p -r1.928 system.module
--- modules/system/system.module	11 May 2010 11:03:12 -0000	1.928
+++ modules/system/system.module	13 May 2010 19:04:38 -0000
@@ -2276,18 +2276,24 @@ function _system_rebuild_module_data() {
 }
 
 /**
  * Rebuild, save, and return data about all currently available modules.
  *
  * @return
  *   Array of all available modules and their data.
  */
 function system_rebuild_module_data() {
+  static $modules;
+  if (isset($modules)) {
+    // The module files do not change during a request, so we cache the result
+    // in case several modules call this function in the same request.
+    return $modules;
+  }
   $modules = _system_rebuild_module_data();
   ksort($modules);
   system_get_files_database($modules, 'module');
   system_update_files_database($modules, 'module');
   $modules = _module_build_dependencies($modules);
   return $modules;
 }
 
 /**
