diff options
author | Haojian Wu <hokein@google.com> | 2018-11-16 10:58:40 +0000 |
---|---|---|
committer | Haojian Wu <hokein@google.com> | 2018-11-16 10:58:40 +0000 |
commit | 22c9f7b296a48d5d3552d776a05f8cb1ff5d921c (patch) | |
tree | 4c394976889c77e1888ffe7f6fd9fd17de9d1ceb | |
parent | b4a64cede820c2fd58884226388dfa8f77cccd0f (diff) | |
download | bcm5719-llvm-22c9f7b296a48d5d3552d776a05f8cb1ff5d921c.tar.gz bcm5719-llvm-22c9f7b296a48d5d3552d776a05f8cb1ff5d921c.zip |
[clangd] Truncate SymbolID to 8 bytes.
Summary:
This is our goal. It has a non-zero rick, but so far we haven't see any
collision (externally and internally).
Reviewers: sammccall
Subscribers: ilya-biryukov, ioeric, MaskRay, jkorous, arphaman, kadircet, cfe-commits
Differential Revision: https://reviews.llvm.org/D54622
llvm-svn: 347044
-rw-r--r-- | clang-tools-extra/clangd/index/Index.h | 3 | ||||
-rw-r--r-- | clang-tools-extra/clangd/index/Serialization.cpp | 4 | ||||
-rw-r--r-- | clang-tools-extra/unittests/clangd/SerializationTests.cpp | 16 |
3 files changed, 11 insertions, 12 deletions
diff --git a/clang-tools-extra/clangd/index/Index.h b/clang-tools-extra/clangd/index/Index.h index de1e4c38ec6..44419518512 100644 --- a/clang-tools-extra/clangd/index/Index.h +++ b/clang-tools-extra/clangd/index/Index.h @@ -116,8 +116,7 @@ public: // The stored hash is truncated to RawSize bytes. // This trades off memory against the number of symbols we can handle. - // FIXME: can we reduce this further to 8 bytes? - constexpr static size_t RawSize = 16; + constexpr static size_t RawSize = 8; llvm::StringRef raw() const { return StringRef(reinterpret_cast<const char *>(HashValue.data()), RawSize); } diff --git a/clang-tools-extra/clangd/index/Serialization.cpp b/clang-tools-extra/clangd/index/Serialization.cpp index d6b4c9cc04c..7eea824ce0c 100644 --- a/clang-tools-extra/clangd/index/Serialization.cpp +++ b/clang-tools-extra/clangd/index/Serialization.cpp @@ -300,7 +300,7 @@ Symbol readSymbol(Reader &Data, ArrayRef<StringRef> Strings) { // REFS ENCODING // A refs section has data grouped by Symbol. Each symbol has: -// - SymbolID: 16 bytes +// - SymbolID: 8 bytes // - NumRefs: varint // - Ref[NumRefs] // Fields of Ref are encoded in turn, see implementation. @@ -338,7 +338,7 @@ std::pair<SymbolID, std::vector<Ref>> readRefs(Reader &Data, // The current versioning scheme is simple - non-current versions are rejected. // If you make a breaking change, bump this version number to invalidate stored // data. Later we may want to support some backward compatibility. -constexpr static uint32_t Version = 6; +constexpr static uint32_t Version = 7; Expected<IndexFileIn> readRIFF(StringRef Data) { auto RIFF = riff::readFile(Data); diff --git a/clang-tools-extra/unittests/clangd/SerializationTests.cpp b/clang-tools-extra/unittests/clangd/SerializationTests.cpp index 8b40cd66b80..d3951228334 100644 --- a/clang-tools-extra/unittests/clangd/SerializationTests.cpp +++ b/clang-tools-extra/unittests/clangd/SerializationTests.cpp @@ -27,7 +27,7 @@ namespace { const char *YAML = R"( --- !Symbol -ID: 057557CEBF6E6B2DD437FBF60CC58F35 +ID: 057557CEBF6E6B2D Name: 'Foo1' Scope: 'clang::' SymInfo: @@ -53,7 +53,7 @@ IncludeHeaders: ... --- !Symbol -ID: 057557CEBF6E6B2DD437FBF60CC58F36 +ID: 057557CEBF6E6B2E Name: 'Foo2' Scope: 'clang::' SymInfo: @@ -72,7 +72,7 @@ Signature: '-sig' CompletionSnippetSuffix: '-snippet' ... !Refs -ID: 057557CEBF6E6B2DD437FBF60CC58F35 +ID: 057557CEBF6E6B2D References: - Kind: 4 Location: @@ -99,13 +99,13 @@ TEST(SerializationTest, YAMLConversions) { ASSERT_TRUE(bool(ParsedYAML)) << ParsedYAML.takeError(); ASSERT_TRUE(bool(ParsedYAML->Symbols)); EXPECT_THAT(*ParsedYAML->Symbols, - UnorderedElementsAre(ID("057557CEBF6E6B2DD437FBF60CC58F35"), - ID("057557CEBF6E6B2DD437FBF60CC58F36"))); + UnorderedElementsAre(ID("057557CEBF6E6B2D"), + ID("057557CEBF6E6B2E"))); auto Sym1 = *ParsedYAML->Symbols->find( - cantFail(SymbolID::fromStr("057557CEBF6E6B2DD437FBF60CC58F35"))); + cantFail(SymbolID::fromStr("057557CEBF6E6B2D"))); auto Sym2 = *ParsedYAML->Symbols->find( - cantFail(SymbolID::fromStr("057557CEBF6E6B2DD437FBF60CC58F36"))); + cantFail(SymbolID::fromStr("057557CEBF6E6B2E"))); EXPECT_THAT(Sym1, QName("clang::Foo1")); EXPECT_EQ(Sym1.Signature, ""); @@ -131,7 +131,7 @@ TEST(SerializationTest, YAMLConversions) { EXPECT_THAT( *ParsedYAML->Refs, UnorderedElementsAre( - Pair(cantFail(SymbolID::fromStr("057557CEBF6E6B2DD437FBF60CC58F35")), + Pair(cantFail(SymbolID::fromStr("057557CEBF6E6B2D")), testing::SizeIs(1)))); auto Ref1 = ParsedYAML->Refs->begin()->second.front(); EXPECT_EQ(Ref1.Kind, RefKind::Reference); |