diff --git a/libartbase/base/bit_table.h b/libartbase/base/bit_table.h
index c1619b5..418d7c4 100644
--- a/libartbase/base/bit_table.h
+++ b/libartbase/base/bit_table.h
@@ -134,14 +134,14 @@
   static constexpr uint32_t kNumColumns = NumColumns;
   static constexpr uint32_t kNoValue = BitTableBase<kNumColumns>::kNoValue;
 
-  BitTableAccessor() {}
   BitTableAccessor(const BitTableBase<kNumColumns>* table, uint32_t row)
       : table_(table), row_(row) {
+    DCHECK(table_ != nullptr);
   }
 
   ALWAYS_INLINE uint32_t Row() const { return row_; }
 
-  ALWAYS_INLINE bool IsValid() const { return table_ != nullptr && row_ < table_->NumRows(); }
+  ALWAYS_INLINE bool IsValid() const { return row_ < table_->NumRows(); }
 
   ALWAYS_INLINE bool Equals(const BitTableAccessor& other) {
     return this->table_ == other.table_ && this->row_ == other.row_;
@@ -223,6 +223,10 @@
   ALWAYS_INLINE Accessor GetRow(uint32_t row) const {
     return Accessor(this, row);
   }
+
+  ALWAYS_INLINE Accessor GetInvalidRow() const {
+    return Accessor(this, static_cast<uint32_t>(-1));
+  }
 };
 
 template<typename Accessor>
diff --git a/runtime/stack_map.cc b/runtime/stack_map.cc
index f9e2d27..7f7f6fc 100644
--- a/runtime/stack_map.cc
+++ b/runtime/stack_map.cc
@@ -61,7 +61,7 @@
       return *it;
     }
   }
-  return StackMap();
+  return stack_maps_.GetInvalidRow();
 }
 
 // Scan backward to determine dex register locations at given stack map.
diff --git a/runtime/stack_map.h b/runtime/stack_map.h
index e94f71a..83f0c05 100644
--- a/runtime/stack_map.h
+++ b/runtime/stack_map.h
@@ -388,7 +388,7 @@
         return stack_map;
       }
     }
-    return StackMap();
+    return stack_maps_.GetInvalidRow();
   }
 
   // Searches the stack map list backwards because catch stack maps are stored at the end.
@@ -399,7 +399,7 @@
         return stack_map;
       }
     }
-    return StackMap();
+    return stack_maps_.GetInvalidRow();
   }
 
   StackMap GetOsrStackMapForDexPc(uint32_t dex_pc) const {
@@ -409,7 +409,7 @@
         return stack_map;
       }
     }
-    return StackMap();
+    return stack_maps_.GetInvalidRow();
   }
 
   StackMap GetStackMapForNativePcOffset(uint32_t pc, InstructionSet isa = kRuntimeISA) const;
@@ -421,7 +421,7 @@
         return item;
       }
     }
-    return InvokeInfo();
+    return invoke_infos_.GetInvalidRow();
   }
 
   // Dump this CodeInfo object on `vios`.
