diff options
author | Lang Hames <lhames@gmail.com> | 2017-12-05 21:44:56 +0000 |
---|---|---|
committer | Lang Hames <lhames@gmail.com> | 2017-12-05 21:44:56 +0000 |
commit | 15fd4404103ee5734db9956cb36f565746ae6e44 (patch) | |
tree | 939b886356e25c68b771299fb5dcf5173756c9c4 /llvm/unittests/ExecutionEngine/Orc/SymbolStringPoolTest.cpp | |
parent | 7df1a925433cac6012f353ac49a1f8fcdf33c36e (diff) | |
download | bcm5719-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.cpp | 43 |
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"; +} + +} |