diff --git modules/field/field.info.inc modules/field/field.info.inc
index f5daa19..6119ae0 100644
--- modules/field/field.info.inc
+++ modules/field/field.info.inc
@@ -28,17 +28,29 @@ function field_info_cache_clear() {
   // functions are moved to the entity API.
   entity_info_cache_clear();
 
-  _field_info_collate_types(TRUE);
-  _field_info_collate_fields(TRUE);
+  field_info_collate_types_reset();
+  field_info_collate_fields_reset();
+}
+
+/**
+ * Reset the cached collation information.
+ */
+function field_info_collate_types_reset() {
+  drupal_static_reset('_field_info_collate_types');
+  cache_clear_all('field_info_types:', 'cache_field', TRUE);
+}
+
+/**
+ * Reset the cached information on existing fields and instances.
+ */
+function field_info_collate_fields_reset() {
+  drupal_static_reset('_field_info_collate_fields');
+  cache_clear_all('field_info_fields', 'cache_field');
 }
 
 /**
  * Collates all information on field types, widget types and related structures.
  *
- * @param $reset
- *   If TRUE, clear the cache. The information will be rebuilt from the database
- *   next time it is needed. Defaults to FALSE.
- *
  * @return
  *   If $reset is TRUE, nothing.
  *   If $reset is FALSE, an array containing the following elements:
@@ -64,21 +76,14 @@ function field_info_cache_clear() {
  *     revision key, bundle key, cacheable, and bundles from hook_entity_info(),
  *     as well as module, giving the module that exposes the entity type.
  */
-function _field_info_collate_types($reset = FALSE) {
+function _field_info_collate_types() {
   global $language;
-  static $info;
+  $info = &drupal_static(__FUNCTION__);
 
   // The _info() hooks invoked below include translated strings, so each
   // language is cached separately.
   $langcode = $language->language;
 
-  if ($reset) {
-    $info = NULL;
-    // Clear all languages.
-    cache_clear_all('field_info_types:', 'cache_field', TRUE);
-    return;
-  }
-
   if (!isset($info)) {
     if ($cached = cache_get("field_info_types:$langcode", 'cache_field')) {
       $info = $cached->data;
@@ -158,10 +163,6 @@ function _field_info_collate_types($reset = FALSE) {
 /**
  * Collates all information on existing fields and instances.
  *
- * @param $reset
- *   If TRUE, clear the cache. The information will be rebuilt from the
- *   database next time it is needed. Defaults to FALSE.
- *
  * @return
  *   If $reset is TRUE, nothing.
  *   If $reset is FALSE, an array containing the following elements:
@@ -175,14 +176,8 @@ function _field_info_collate_types($reset = FALSE) {
  *   - instances: Array of existing instances, keyed by entity type, bundle
  *     name and field name. This entry only lists non-deleted instances.
  */
-function _field_info_collate_fields($reset = FALSE) {
-  static $info;
-
-  if ($reset) {
-    $info = NULL;
-    cache_clear_all('field_info_fields', 'cache_field');
-    return;
-  }
+function _field_info_collate_fields() {
+  $info = &drupal_static(__FUNCTION__);
 
   if (!isset($info)) {
     if ($cached = cache_get('field_info_fields', 'cache_field')) {
