summaryrefslogtreecommitdiffstats
path: root/llvm/unittests/ExecutionEngine/Orc/SymbolStringPoolTest.cpp
diff options
context:
space:
mode:
authorLang Hames <lhames@gmail.com>2017-12-05 21:44:56 +0000
committerLang Hames <lhames@gmail.com>2017-12-05 21:44:56 +0000
commit15fd4404103ee5734db9956cb36f565746ae6e44 (patch)
tree939b886356e25c68b771299fb5dcf5173756c9c4 /llvm/unittests/ExecutionEngine/Orc/SymbolStringPoolTest.cpp
parent7df1a925433cac6012f353ac49a1f8fcdf33c36e (diff)
downloadbcm5719-llvm-15fd4404103ee5734db9956cb36f565746ae6e44.tar.gz
bcm5719-llvm-15fd4404103ee5734db9956cb36f565746ae6e44.zip
[Orc] Add a SymbolStringPool data structure for efficient storage and fast
comparison of symbol names. SymbolStringPool is a thread-safe string pool that will be used in upcoming Orc APIs to facilitate efficient storage and fast comparison of symbol name strings. llvm-svn: 319839
Diffstat (limited to 'llvm/unittests/ExecutionEngine/Orc/SymbolStringPoolTest.cpp')
-rw-r--r--llvm/unittests/ExecutionEngine/Orc/SymbolStringPoolTest.cpp43
1 files changed, 43 insertions, 0 deletions
diff --git a/llvm/unittests/ExecutionEngine/Orc/SymbolStringPoolTest.cpp b/llvm/unittests/ExecutionEngine/Orc/SymbolStringPoolTest.cpp
new file mode 100644
index 00000000000..ac79541d50c
--- /dev/null
+++ b/llvm/unittests/ExecutionEngine/Orc/SymbolStringPoolTest.cpp
@@ -0,0 +1,43 @@
+//===----- SymbolStringPoolTest.cpp - Unit tests for SymbolStringPool -----===//
+//
+// The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+#include "llvm/ExecutionEngine/Orc/SymbolStringPool.h"
+#include "gtest/gtest.h"
+
+using namespace llvm;
+using namespace llvm::orc;
+
+namespace {
+
+TEST(SymbolStringPool, UniquingAndEquality) {
+ SymbolStringPool SP;
+ auto P1 = SP.intern("hello");
+
+ std::string S("hel");
+ S += "lo";
+ auto P2 = SP.intern(S);
+
+ auto P3 = SP.intern("goodbye");
+
+ EXPECT_EQ(P1, P2) << "Failed to unique entries";
+ EXPECT_NE(P1, P3) << "Inequal pooled symbol strings comparing equal";
+}
+
+TEST(SymbolStringPool, ClearDeadEntries) {
+ SymbolStringPool SP;
+ {
+ auto P1 = SP.intern("s1");
+ SP.clearDeadEntries();
+ EXPECT_FALSE(SP.empty()) << "\"s1\" entry in pool should still be retained";
+ }
+ SP.clearDeadEntries();
+ EXPECT_TRUE(SP.empty()) << "pool should be empty";
+}
+
+}
OpenPOWER on IntegriCloud