summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHaojian Wu <hokein@google.com>2018-11-16 10:58:40 +0000
committerHaojian Wu <hokein@google.com>2018-11-16 10:58:40 +0000
commit22c9f7b296a48d5d3552d776a05f8cb1ff5d921c (patch)
tree4c394976889c77e1888ffe7f6fd9fd17de9d1ceb
parentb4a64cede820c2fd58884226388dfa8f77cccd0f (diff)
downloadbcm5719-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.h3
-rw-r--r--clang-tools-extra/clangd/index/Serialization.cpp4
-rw-r--r--clang-tools-extra/unittests/clangd/SerializationTests.cpp16
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);
OpenPOWER on IntegriCloud