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/compiler/optimizing/stack_map_test.cc b/compiler/optimizing/stack_map_test.cc
index 98e14ea..666fb60 100644
--- a/compiler/optimizing/stack_map_test.cc
+++ b/compiler/optimizing/stack_map_test.cc
@@ -136,7 +136,7 @@
ArenaBitVector sp_mask2(&arena, 0, true);
sp_mask2.SetBit(3);
- sp_mask1.SetBit(8);
+ sp_mask2.SetBit(8);
stream.BeginStackMapEntry(1, 128, 0xFF, &sp_mask2, number_of_dex_registers, 0);
stream.AddDexRegisterEntry(Kind::kInRegister, 18); // Short location.
stream.AddDexRegisterEntry(Kind::kInFpuRegister, 3); // Short location.
@@ -148,7 +148,7 @@
stream.FillIn(region);
CodeInfo code_info(region);
- ASSERT_EQ(1u, code_info.GetStackMaskSize());
+ ASSERT_EQ(2u, code_info.GetStackMaskSize());
ASSERT_EQ(2u, code_info.GetNumberOfStackMaps());
uint32_t number_of_location_catalog_entries =