Pin objects in the debug registry hash table.

Evidently, these objects are presumed to have stable addresses.

Change-Id: I20ba2adc9b78ac157ba210a8a4d5b2b7355c33fb
diff --git a/vm/alloc/Copying.c b/vm/alloc/Copying.c
index a2532ac..3d307e6 100644
--- a/vm/alloc/Copying.c
+++ b/vm/alloc/Copying.c
@@ -1461,27 +1461,6 @@
  * External root scavenging routines.
  */
 
-static void scavengeHashTable(HashTable *table)
-{
-    HashEntry *entry;
-    void *obj;
-    int i;
-
-    if (table == NULL) {
-        return;
-    }
-    dvmHashTableLock(table);
-    for (i = 0; i < table->tableSize; ++i) {
-        entry = &table->pEntries[i];
-        obj = entry->data;
-        if (obj == NULL || obj == HASH_TOMBSTONE) {
-            continue;
-        }
-        scavengeReference((Object **)(void *)&entry->data);
-    }
-    dvmHashTableUnlock(table);
-}
-
 static void pinHashTableEntries(HashTable *table)
 {
     HashEntry *entry;
@@ -2254,6 +2233,7 @@
     pinReferenceTable(&gDvm.jniPinRefTable);
     pinReferenceTable(&gcHeap->nonCollectableRefs);
     pinHashTableEntries(gDvm.loadedClasses);
+    pinHashTableEntries(gDvm.dbgRegistry);
     pinPrimitiveClasses();
     pinInternedStrings();
 
@@ -2292,9 +2272,6 @@
     scavengeReference(&gDvm.internalErrorObj);
     scavengeReference(&gDvm.noClassDefFoundErrorObj);
 
-    LOG_SCAV("Scavenging gDvm.dbgRegistry");
-    scavengeHashTable(gDvm.dbgRegistry);
-
     // LOG_SCAV("Scavenging gDvm.internedString");
     scavengeInternedStrings();