Fix the ReferenceMap test.

Change-Id: Ib580210b2b51f5cf4480843dbb6b939bc2584956
diff --git a/test/ReferenceMap/stack_walk_refmap_jni.cc b/test/ReferenceMap/stack_walk_refmap_jni.cc
index af2c4f3..2566f05 100644
--- a/test/ReferenceMap/stack_walk_refmap_jni.cc
+++ b/test/ReferenceMap/stack_walk_refmap_jni.cc
@@ -10,19 +10,19 @@
 
 namespace art {
 
-#define REG(method, reg_bitmap, reg) \
+#define IS_IN_REF_BITMAP(method, ref_bitmap, reg) \
   ( ((reg) < (method)->NumRegisters()) &&                       \
-    (( *((reg_bitmap) + (reg)/8) >> ((reg) % 8) ) & 0x01) )
+    (( *((ref_bitmap) + (reg)/8) >> ((reg) % 8) ) & 0x01) )
 
-#define CHECK_REGS(...) do {          \
+#define CHECK_REGS_CONTAIN_REFS(...)     \
+  do {                                   \
     int t[] = {__VA_ARGS__};             \
     int t_size = sizeof(t) / sizeof(*t);      \
     for (int i = 0; i < t_size; ++i)          \
-      EXPECT_TRUE(REG(m, reg_bitmap, t[i])) << "Error: Reg " << i << " is not in RegisterMap"; \
+      CHECK(IS_IN_REF_BITMAP(m, ref_bitmap, t[i])) \
+          << "Error: Reg @ " << i << "-th argument is not in GC map"; \
   } while(false)
 
-// << "Error: Reg " << i << " is not in RegisterMap";
-
 struct ReferenceMap2Visitor : public Thread::StackVisitor {
   ReferenceMap2Visitor() {
   }
@@ -45,114 +45,89 @@
       return;
     }
 
-    const uint8_t* reg_bitmap = NULL;
+    const uint8_t* ref_bitmap = NULL;
     std::string m_name = m->GetName()->ToModifiedUtf8();
 
     // Given the method name and the number of times the method has been called,
     // we know the Dex registers with live reference values. Assert that what we
     // find is what is expected.
     if (m_name.compare("f") == 0) {
-      reg_bitmap = map.FindBitMap(0x01U);
-      if (reg_bitmap) {
-        LOG(WARNING) << "Reg1: " << *reg_bitmap << *(reg_bitmap+1);
-        CHECK_REGS(7);  //v7: this
-      }
+      ref_bitmap = map.FindBitMap(0x03U);
+      CHECK(ref_bitmap);
+      CHECK_REGS_CONTAIN_REFS(8);  // v8: this
 
-      reg_bitmap = map.FindBitMap(0x02U);
-      if (reg_bitmap) {
-        LOG(WARNING) << "Reg2: " << *reg_bitmap << *(reg_bitmap+1);
-        CHECK_REGS(7);  //v7: this
-      }
+      ref_bitmap = map.FindBitMap(0x06U);
+      CHECK(ref_bitmap);
+      CHECK_REGS_CONTAIN_REFS(8, 1);  // v7: this, v2: x
 
-      reg_bitmap = map.FindBitMap(0x03U);
-      if (reg_bitmap) {
-        LOG(WARNING) << "Reg3: " << std::hex << reg_bitmap[0] << reg_bitmap[1];
-        CHECK_REGS(7);  //v7: this
-      }
+      ref_bitmap = map.FindBitMap(0x08U);
+      CHECK(ref_bitmap);
+      CHECK_REGS_CONTAIN_REFS(8, 3, 1);  // v7: this, v2: x, v0: y
 
-      reg_bitmap = map.FindBitMap(0x05U);
-      if (reg_bitmap) {
-        LOG(WARNING) << "Reg4: " << std::hex << *reg_bitmap << *(reg_bitmap+1);
-        CHECK_REGS(0, 7);  //v0: x, v7: this
-      }
+      ref_bitmap = map.FindBitMap(0x0cU);
+      CHECK(ref_bitmap);
+      CHECK_REGS_CONTAIN_REFS(8, 3, 1);  // v7: this, v2: x, v0: y
 
-      reg_bitmap = map.FindBitMap(0x06U);
-      if (reg_bitmap) {
-        LOG(WARNING) << "Reg5: " << std::hex << reg_bitmap[0] << reg_bitmap[1];
-        CHECK_REGS(0, 7);  //v0: x, v7: this
-      }
+      ref_bitmap = map.FindBitMap(0x0eU);
+      CHECK(ref_bitmap);
+      CHECK_REGS_CONTAIN_REFS(8, 3, 1);  // v7: this, v2: x, v0: y
 
-      reg_bitmap = map.FindBitMap(0x08U);
-      if (reg_bitmap) {
-        LOG(WARNING) << "Reg6: " << std::hex << *reg_bitmap << *(reg_bitmap+1);
-        CHECK_REGS(0, 2, 7);  //v0: x, v2: y, v7: this
-      }
+      ref_bitmap = map.FindBitMap(0x10U);
+      CHECK(ref_bitmap);
+      CHECK_REGS_CONTAIN_REFS(8, 3, 1);  // v7: this, v2: x, v0: y
 
-      reg_bitmap = map.FindBitMap(0x0bU);
-      if (reg_bitmap) {
-        LOG(WARNING) << "Reg7: " << std::hex << *reg_bitmap << *(reg_bitmap+1);
-        CHECK_REGS(0, 2, 7);  //v0: x, v2: y, v7: this
-      }
+      ref_bitmap = map.FindBitMap(0x13U);
+      CHECK(ref_bitmap);
+      CHECK_REGS_CONTAIN_REFS(8, 3, 2, 1);  // v7: this, v2: x, v0: y
 
-      reg_bitmap = map.FindBitMap(0x0cU);
-      if (reg_bitmap) {
-        LOG(WARNING) << "Reg8: " << std::hex << *reg_bitmap << *(reg_bitmap+1);
-        CHECK_REGS(0, 2, 7);  //v0: x, v2: y, v7: this
-      }
+      ref_bitmap = map.FindBitMap(0x15U);
+      CHECK(ref_bitmap);
+        // FIXME: v1?
+      CHECK_REGS_CONTAIN_REFS(8, 2, 1, 0);  // v7: this, v2: x, v0: y, v1: y or ex.
 
-      reg_bitmap = map.FindBitMap(0x38U);
-      if (reg_bitmap) {
-        LOG(WARNING) << "Reg9: " << std::hex << *reg_bitmap << *(reg_bitmap+1);
-        CHECK_REGS(0, 2, 7);  //v0: x, v2: y, v7: this
-      }
+      ref_bitmap = map.FindBitMap(0x18U);
+      CHECK(ref_bitmap);
+      CHECK_REGS_CONTAIN_REFS(8, 2, 1, 0);  // v7: this, v2: x, v0: y
 
-      reg_bitmap = map.FindBitMap(0x39U);
-      if (reg_bitmap) {
-        LOG(WARNING) << "Reg10: " << std::hex << *reg_bitmap << *(reg_bitmap+1);
-        CHECK_REGS(0, 2, 7, 1);  //v0: x, v2: y, v7: this, v1: ex
-      }
+      ref_bitmap = map.FindBitMap(0x1aU);
+      CHECK(ref_bitmap);
+      CHECK_REGS_CONTAIN_REFS(8, 5, 2, 1, 0);  // v7: this, v2: x, v0: y, v3: x[1]
 
-      reg_bitmap = map.FindBitMap(0x3aU);
-      if (reg_bitmap) {
-        LOG(WARNING) << "Reg11: " << std::hex << *reg_bitmap << *(reg_bitmap+1);
-        CHECK_REGS(0, 2, 7, 1);  //v0: x, v2: y, v7: this, v1: y
-      }
+      ref_bitmap = map.FindBitMap(0x1dU);
+      CHECK(ref_bitmap);
+      CHECK_REGS_CONTAIN_REFS(8, 5, 2, 1, 0);  // v7: this, v2: x, v0: y, v3: x[1]
 
-      reg_bitmap = map.FindBitMap(0x16U);
-      if (reg_bitmap) {
-        LOG(WARNING) << "Reg12: " << std::hex << *reg_bitmap << *(reg_bitmap+1);
-        CHECK_REGS(0, 7, 1);  //v0: x, v7: this, v1: y
-      }
+      ref_bitmap = map.FindBitMap(0x1fU);
+      CHECK(ref_bitmap);
+      CHECK_REGS_CONTAIN_REFS(8, 2, 1, 0);  // v7: this, v2: x, v0: y
 
-      reg_bitmap = map.FindBitMap(0x20U);
-      if (reg_bitmap) {
-        LOG(WARNING) << "Reg13: " << std::hex << *reg_bitmap << *(reg_bitmap+1);
-        CHECK_REGS(0, 7, 1);  //v0: x, v7: this, v1: y
-      }
+      ref_bitmap = map.FindBitMap(0x21U);
+      CHECK(ref_bitmap);
+      CHECK_REGS_CONTAIN_REFS(8, 2, 1, 0);  // v7: this, v2: x, v0: y
 
-      reg_bitmap = map.FindBitMap(0x22U);
-      if (reg_bitmap) {
-        LOG(WARNING) << "Reg14: " << std::hex << *reg_bitmap << *(reg_bitmap+1);
-        CHECK_REGS(0, 7, 1);  //v0: x, v7: this, v1: y
-      }
+      ref_bitmap = map.FindBitMap(0x25U);
+      CHECK(ref_bitmap);
+      CHECK_REGS_CONTAIN_REFS(8, 3, 2, 1, 0);  // v7: this, v2: x, v0: y
 
-      reg_bitmap = map.FindBitMap(0x25U);
-      if (reg_bitmap) {
-        LOG(WARNING) << "Reg15: " << std::hex << *reg_bitmap << *(reg_bitmap+1);
-        CHECK_REGS(0);  //v0: x, v7: this, v1: y
-      }
+      ref_bitmap = map.FindBitMap(0x27U);
+      CHECK(ref_bitmap);
+      CHECK_REGS_CONTAIN_REFS(8, 4, 2, 1);  // v7: this, v2: x, v0: ex, v1: y
 
-      reg_bitmap = map.FindBitMap(0x26U);
-      if (reg_bitmap) {
-        LOG(WARNING) << "Reg16: " << std::hex << *reg_bitmap << *(reg_bitmap+1);
-        CHECK_REGS(0, 7, 1);  //v0: y, v7: this, v1: y
-      }
+      ref_bitmap = map.FindBitMap(0x29U);
+      CHECK(ref_bitmap);
+      CHECK_REGS_CONTAIN_REFS(8, 4, 2, 1);  // v7: this, v2: x, v0: ex, v1: y
 
-      reg_bitmap = map.FindBitMap(0x14U);
-      if (reg_bitmap) {
-        LOG(WARNING) << "Reg17: " << std::hex << *reg_bitmap << *(reg_bitmap+1);
-        CHECK_REGS(0, 7);  //v0: y, v7: this
-      }
+      ref_bitmap = map.FindBitMap(0x2cU);
+      CHECK(ref_bitmap);
+      CHECK_REGS_CONTAIN_REFS(8, 4, 2, 1);  // v7: this, v2: x, v0: ex, v1: y
+
+      ref_bitmap = map.FindBitMap(0x2fU);
+      CHECK(ref_bitmap);
+      CHECK_REGS_CONTAIN_REFS(8, 4, 3, 2, 1);  // v7: this, v2: x, v0: ex, v1: y, v6: ex
+
+      ref_bitmap = map.FindBitMap(0x32U);
+      CHECK(ref_bitmap);
+      CHECK_REGS_CONTAIN_REFS(8, 3, 2, 1, 0);  // v7: this, v2: x, v0: ex, v1: y
     }
 
   }