Merge "Revert "Revert "Cleanup jvmti tests"""
diff --git a/runtime/stack_map.h b/runtime/stack_map.h
index dd7e531..5e556be 100644
--- a/runtime/stack_map.h
+++ b/runtime/stack_map.h
@@ -1093,7 +1093,9 @@
   }
 
   CodeInfoEncoding ExtractEncoding() const {
-    return CodeInfoEncoding(region_.start());
+    CodeInfoEncoding encoding(region_.start());
+    AssertValidStackMap(encoding);
+    return encoding;
   }
 
   bool HasInlineInfo(const CodeInfoEncoding& encoding) const {
@@ -1254,6 +1256,18 @@
             uint16_t number_of_dex_registers,
             bool dump_stack_maps) const;
 
+  // Check that the code info has valid stack map and abort if it does not.
+  void AssertValidStackMap(const CodeInfoEncoding& encoding) const {
+    if (region_.size() != 0 && region_.size() < GetStackMapsSize(encoding)) {
+      LOG(FATAL) << region_.size() << "\n"
+                 << encoding.header_size << "\n"
+                 << encoding.non_header_size << "\n"
+                 << encoding.number_of_location_catalog_entries << "\n"
+                 << encoding.number_of_stack_maps << "\n"
+                 << encoding.stack_map_size_in_bytes;
+    }
+  }
+
  private:
   MemoryRegion GetStackMaps(const CodeInfoEncoding& encoding) const {
     return region_.size() == 0