Fix string deduplication for multi-image extensions.

Test: WITH_TIDY=1 m
Test: m test-art-host-gtest
Test: testrunner.py --host --optimizing
Test: aosp_taimen-userdebug boots.
Bug: 153104371
Bug: 152037801
Change-Id: Ib91e7a13047d7da78deb855a6713a1a5d9044463
diff --git a/runtime/gc/space/image_space.cc b/runtime/gc/space/image_space.cc
index edec8a5..9958956 100644
--- a/runtime/gc/space/image_space.cc
+++ b/runtime/gc/space/image_space.cc
@@ -677,9 +677,10 @@
 
 class ImageSpace::RemapInternedStringsVisitor {
  public:
-  explicit RemapInternedStringsVisitor(SafeMap<mirror::String*, mirror::String*> intern_remap)
+  explicit RemapInternedStringsVisitor(
+      const SafeMap<mirror::String*, mirror::String*>& intern_remap)
       REQUIRES_SHARED(Locks::mutator_lock_)
-      : intern_remap_(std::move(intern_remap)),
+      : intern_remap_(intern_remap),
         string_class_(GetStringClass()) {}
 
   // Visitor for VisitReferences().
@@ -717,7 +718,7 @@
     return intern_remap_.begin()->first->GetClass<kVerifyNone, kWithoutReadBarrier>();
   }
 
-  const SafeMap<mirror::String*, mirror::String*> intern_remap_;
+  const SafeMap<mirror::String*, mirror::String*>& intern_remap_;
   mirror::Class* const string_class_;
 };
 
@@ -802,7 +803,7 @@
         SafeMap<mirror::String*, mirror::String*> intern_remap;
         RemoveInternTableDuplicates(old_spaces, space.get(), &intern_remap);
         if (!intern_remap.empty()) {
-          RemapInternedStringDuplicates(std::move(intern_remap), space.get());
+          RemapInternedStringDuplicates(intern_remap, space.get());
         }
       }
 
@@ -1026,9 +1027,9 @@
   }
 
   static void RemapInternedStringDuplicates(
-      SafeMap<mirror::String*, mirror::String*>&& intern_remap,
+      const SafeMap<mirror::String*, mirror::String*>& intern_remap,
       ImageSpace* new_space) REQUIRES_SHARED(Locks::mutator_lock_) {
-    RemapInternedStringsVisitor visitor(std::move(intern_remap));
+    RemapInternedStringsVisitor visitor(intern_remap);
     static_assert(IsAligned<kObjectAlignment>(sizeof(ImageHeader)), "Header alignment check");
     uint32_t objects_end = new_space->GetImageHeader().GetObjectsSection().Size();
     DCHECK_ALIGNED(objects_end, kObjectAlignment);
@@ -3042,7 +3043,7 @@
         if (!intern_remap.empty()) {
           for (size_t i = 0; i != image_space_count; ++i) {
             ImageSpace* new_space = spaces[space_pos + i].get();
-            Loader::RemapInternedStringDuplicates(std::move(intern_remap), new_space);
+            Loader::RemapInternedStringDuplicates(intern_remap, new_space);
           }
         }
       }