diff --git a/lib/bundler/definition.rb b/lib/bundler/definition.rb
index b4db2850fd..96c7c862d7 100644
--- a/lib/bundler/definition.rb
+++ b/lib/bundler/definition.rb
@@ -233,6 +233,10 @@ module Bundler
       end
     end
 
+    def locked_dependencies
+      @locked_deps.values
+    end
+
     def specs_for(groups)
       groups = requested_groups if groups.empty?
       deps = dependencies_for(groups)
@@ -374,8 +378,8 @@ module Bundler
       new_sources = gemfile_sources - @locked_sources
       deleted_sources = @locked_sources - gemfile_sources
 
-      new_deps = @dependencies - @locked_deps.values
-      deleted_deps = @locked_deps.values - @dependencies
+      new_deps = @dependencies - locked_dependencies
+      deleted_deps = locked_dependencies - @dependencies
 
       # Check if it is possible that the source is only changed thing
       if (new_deps.empty? && deleted_deps.empty?) && (!new_sources.empty? && !deleted_sources.empty?)
@@ -567,7 +571,7 @@ module Bundler
 
     def dependencies_for_source_changed?(source, locked_source = source)
       deps_for_source = @dependencies.select {|s| s.source == source }
-      locked_deps_for_source = @locked_deps.values.select {|dep| dep.source == locked_source }
+      locked_deps_for_source = locked_dependencies.select {|dep| dep.source == locked_source }
 
       deps_for_source.uniq.sort != locked_deps_for_source.sort
     end
@@ -651,7 +655,7 @@ module Bundler
 
     def converge_dependencies
       frozen = Bundler.frozen_bundle?
-      (@dependencies + @locked_deps.values).each do |dep|
+      (@dependencies + locked_dependencies).each do |dep|
         locked_source = @locked_deps[dep.name]
         # This is to make sure that if bundler is installing in deployment mode and
         # after locked_source and sources don't match, we still use locked_source.