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:38:10 -0000
@@ -2276,18 +2276,25 @@ 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;
+  $modules = &drupal_static(__FUNCTION__);
+  if (isset($modules)) {
+    // Only rebuild once per 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;
 }
 
 /**
