diff --git a/core/modules/views/views.module b/core/modules/views/views.module
index 9de0ff2..f37b94b 100644
--- a/core/modules/views/views.module
+++ b/core/modules/views/views.module
@@ -1107,32 +1107,24 @@ function views_get_enabled_display_extenders() {
  * @endcode
  */
 function views_get_applicable_views($type) {
-  // @todo: Use a smarter flagging system so that we don't have to
-  // load every view for this.
   $result = array();
-  $views = views_get_all_views();
-
-  foreach ($views as $view) {
-    // Skip disabled views.
-    if (!$view->isEnabled()) {
-      continue;
-    }
 
-    $display = $view->get('display');
-    if (empty($display)) {
-      // Skip this view as it is broken.
-      continue;
-    }
+  $query = drupal_container()->get('entity.query')->get('view')
+    ->condition('disabled', '0')
+    ->condition('display.*.display_options.path', NULL, 'IS NOT NULL')
+    ->execute();
 
+  foreach (entity_get_controller('view')->load($query) as $view) {
     // Check each display to see if it meets the criteria and is enabled.
     $executable = $view->get('executable');
-    $executable->setDisplay();
+    $executable->initDisplay();
     foreach ($executable->displayHandlers as $id => $handler) {
-      if (!empty($handler->definition[$type]) && $handler->isEnabled()) {
-        $result[] = array($executable, $id);
+      if ($handler->isEnabled()) {
+        $result[] = array($executable, $id)
       }
     }
   }
+
   return $result;
 }
 
