summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVitaly Buka <vitalybuka@google.com>2018-05-08 04:57:08 +0000
committerVitaly Buka <vitalybuka@google.com>2018-05-08 04:57:08 +0000
commit4e76d7fcb69d615096a55efbb1efb0cde6550c9f (patch)
treedd3b996f0ef085eb9d727540348a2b5694b6d341
parent4199dbd633ba158ebbc910fa6ce786c48f367c85 (diff)
downloadbcm5719-llvm-4e76d7fcb69d615096a55efbb1efb0cde6550c9f.tar.gz
bcm5719-llvm-4e76d7fcb69d615096a55efbb1efb0cde6550c9f.zip
[sanitizer] Add InternalMmapVector::swap
llvm-svn: 331736
-rw-r--r--compiler-rt/lib/sanitizer_common/sanitizer_common.h6
-rw-r--r--compiler-rt/lib/sanitizer_common/tests/sanitizer_common_test.cc18
2 files changed, 24 insertions, 0 deletions
diff --git a/compiler-rt/lib/sanitizer_common/sanitizer_common.h b/compiler-rt/lib/sanitizer_common/sanitizer_common.h
index cd47028c949..52958de6de0 100644
--- a/compiler-rt/lib/sanitizer_common/sanitizer_common.h
+++ b/compiler-rt/lib/sanitizer_common/sanitizer_common.h
@@ -510,6 +510,12 @@ class InternalMmapVectorNoCtor {
return data() + size();
}
+ void swap(InternalMmapVectorNoCtor &other) {
+ Swap(data_, other.data_);
+ Swap(capacity_, other.capacity_);
+ Swap(size_, other.size_);
+ }
+
private:
void Resize(uptr new_capacity) {
CHECK_GT(new_capacity, 0);
diff --git a/compiler-rt/lib/sanitizer_common/tests/sanitizer_common_test.cc b/compiler-rt/lib/sanitizer_common/tests/sanitizer_common_test.cc
index ff5c63279dc..da761bef689 100644
--- a/compiler-rt/lib/sanitizer_common/tests/sanitizer_common_test.cc
+++ b/compiler-rt/lib/sanitizer_common/tests/sanitizer_common_test.cc
@@ -130,6 +130,24 @@ TEST(SanitizerCommon, InternalMmapVectorEq) {
EXPECT_TRUE(vector1 != vector2);
}
+TEST(SanitizerCommon, InternalMmapVectorSwap) {
+ InternalMmapVector<uptr> vector1;
+ InternalMmapVector<uptr> vector2;
+ InternalMmapVector<uptr> vector3;
+ InternalMmapVector<uptr> vector4;
+ for (uptr i = 0; i < 100; i++) {
+ vector1.push_back(i);
+ vector2.push_back(i);
+ vector3.push_back(-i);
+ vector4.push_back(-i);
+ }
+ EXPECT_NE(vector2, vector3);
+ EXPECT_NE(vector1, vector4);
+ vector1.swap(vector3);
+ EXPECT_EQ(vector2, vector3);
+ EXPECT_EQ(vector1, vector4);
+}
+
void TestThreadInfo(bool main) {
uptr stk_addr = 0;
uptr stk_size = 0;
OpenPOWER on IntegriCloud