Remove alignment bits in between stack maps
Saves 0.65% of boot.oat size, probably similar on apps. Added
BitMemoryRegion to avoid requiring adding state to StackMap. Added
test to memory_region_test.
Test: clean-oat-host && test-art-host
Bug: 34621054
Change-Id: I40279c59e262bd5e3c6a9135f83e22b5b6900d68
diff --git a/runtime/quick_exception_handler.cc b/runtime/quick_exception_handler.cc
index b809c3e..8d758a4 100644
--- a/runtime/quick_exception_handler.cc
+++ b/runtime/quick_exception_handler.cc
@@ -438,7 +438,7 @@
const uint8_t* addr = reinterpret_cast<const uint8_t*>(GetCurrentQuickFrame()) + offset;
value = *reinterpret_cast<const uint32_t*>(addr);
uint32_t bit = (offset >> 2);
- if (stack_map.GetNumberOfStackMaskBits(encoding.stack_map_encoding) > bit &&
+ if (code_info.GetNumberOfStackMaskBits(encoding) > bit &&
stack_map.GetStackMaskBit(encoding.stack_map_encoding, bit)) {
is_reference = true;
}