diff --git a/includes/cache.inc b/includes/cache.inc index b74752f..ffb3f7e 100644 --- a/includes/cache.inc +++ b/includes/cache.inc @@ -13,9 +13,18 @@ * One example is views_get_handler. */ function _views_fetch_data($table = NULL, $move = TRUE, $reset = FALSE) { - $cache = &drupal_static(__FUNCTION__ . '_cache'); - $recursion_protection = &drupal_static(__FUNCTION__ . '_recursion_protected'); - $fully_loaded = &drupal_static(__FUNCTION__ . '_fully_loaded'); + static $drupal_static_fast; + + if (!isset($drupal_static_fast)) { + $drupal_static_fast['cache'] = &drupal_static(__FUNCTION__ . '_cache'); + $drupal_static_fast['recursion_protection'] = &drupal_static(__FUNCTION__ . '_recursion_protected'); + $drupal_static_fast['fully_loaded'] = &drupal_static(__FUNCTION__ . '_fully_loaded'); + } + + $cache = &$drupal_static_fast['cache']; + $recursion_protection = &$drupal_static_fast['recursion_protection']; + $fully_loaded = &$drupal_static_fast['fully_loaded']; + if ($reset) { $cache = NULL; $fully_loaded = FALSE;