ART: Fast copy stack mask
StackMap::SetStackMask will currently copy a BitVector into a Memory-
Region bit by bit. This patch adds a new function for copying the data
with memcpy.
This is resubmission of CL I28d45a590b35a4a854cca2f57db864cf8a081487
but with a fix for a broken test which it revealed.
Change-Id: Ib65aa614d3ab7b5c99c6719fdc8e436466a4213d
diff --git a/runtime/stack_map.h b/runtime/stack_map.h
index eefdaa7..ba0b6d6 100644
--- a/runtime/stack_map.h
+++ b/runtime/stack_map.h
@@ -671,9 +671,7 @@
void SetStackMask(const CodeInfo& info, const BitVector& sp_map) {
MemoryRegion region = GetStackMask(info);
- for (size_t i = 0; i < region.size_in_bits(); i++) {
- region.StoreBit(i, sp_map.IsBitSet(i));
- }
+ sp_map.CopyTo(region.start(), region.size());
}
bool HasDexRegisterMap(const CodeInfo& info) const {