Skip to content

Commit bfd9e0a

Browse files
authored
Merge pull request #27845 from nkcsgexi/comments-address-previous-patch
SerializeLoc: address Jordan's previous code review comments. NFC
2 parents 2d92894 + 0abcc1d commit bfd9e0a

File tree

7 files changed

+28
-34
lines changed

7 files changed

+28
-34
lines changed

include/swift/Frontend/Frontend.h

Lines changed: 13 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,18 @@ namespace Lowering {
6060
class TypeConverter;
6161
}
6262

63+
struct ModuleBuffers {
64+
std::unique_ptr<llvm::MemoryBuffer> ModuleBuffer;
65+
std::unique_ptr<llvm::MemoryBuffer> ModuleDocBuffer;
66+
std::unique_ptr<llvm::MemoryBuffer> ModuleSourceInfoBuffer;
67+
ModuleBuffers(std::unique_ptr<llvm::MemoryBuffer> ModuleBuffer,
68+
std::unique_ptr<llvm::MemoryBuffer> ModuleDocBuffer = nullptr,
69+
std::unique_ptr<llvm::MemoryBuffer> ModuleSourceInfoBuffer = nullptr):
70+
ModuleBuffer(std::move(ModuleBuffer)),
71+
ModuleDocBuffer(std::move(ModuleDocBuffer)),
72+
ModuleSourceInfoBuffer(std::move(ModuleSourceInfoBuffer)) {}
73+
};
74+
6375
/// The abstract configuration of the compiler, including:
6476
/// - options for all stages of translation,
6577
/// - information about the build environment,
@@ -392,15 +404,9 @@ class CompilerInstance {
392404
/// Contains buffer IDs for input source code files.
393405
std::vector<unsigned> InputSourceCodeBufferIDs;
394406

395-
struct PartialModuleInputs {
396-
std::unique_ptr<llvm::MemoryBuffer> ModuleBuffer;
397-
std::unique_ptr<llvm::MemoryBuffer> ModuleDocBuffer;
398-
std::unique_ptr<llvm::MemoryBuffer> ModuleSourceInfoBuffer;
399-
};
400-
401407
/// Contains \c MemoryBuffers for partial serialized module files and
402408
/// corresponding partial serialized module documentation files.
403-
std::vector<PartialModuleInputs> PartialModules;
409+
std::vector<ModuleBuffers> PartialModules;
404410

405411
enum : unsigned { NO_SUCH_BUFFER = ~0U };
406412
unsigned MainBufferID = NO_SUCH_BUFFER;
@@ -556,18 +562,6 @@ class CompilerInstance {
556562

557563
Optional<unsigned> getRecordedBufferID(const InputFile &input, bool &failed);
558564

559-
struct ModuleBuffers {
560-
std::unique_ptr<llvm::MemoryBuffer> ModuleBuffer;
561-
std::unique_ptr<llvm::MemoryBuffer> ModuleDocBuffer;
562-
std::unique_ptr<llvm::MemoryBuffer> ModuleSourceInfoBuffer;
563-
ModuleBuffers(std::unique_ptr<llvm::MemoryBuffer> ModuleBuffer,
564-
std::unique_ptr<llvm::MemoryBuffer> ModuleDocBuffer = nullptr,
565-
std::unique_ptr<llvm::MemoryBuffer> ModuleSourceInfoBuffer = nullptr):
566-
ModuleBuffer(std::move(ModuleBuffer)),
567-
ModuleDocBuffer(std::move(ModuleDocBuffer)),
568-
ModuleSourceInfoBuffer(std::move(ModuleSourceInfoBuffer)) {}
569-
};
570-
571565
/// Given an input file, return a buffer to use for its contents,
572566
/// and a buffer for the corresponding module doc file if one exists.
573567
/// On failure, return a null pointer for the first element of the returned

include/swift/Serialization/SerializedModuleLoader.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ class SerializedModuleLoaderBase : public ModuleLoader {
9797
openModuleSourceInfoFileIfPresent(AccessPathElem ModuleID,
9898
StringRef ModulePath,
9999
StringRef ModuleSourceInfoFileName,
100-
std::unique_ptr<llvm::MemoryBuffer> *ModuleSourceInfoBuffer);
100+
std::unique_ptr<llvm::MemoryBuffer> *ModuleSourceInfoBuffer);
101101

102102
/// If the module loader subclass knows that all options have been tried for
103103
/// loading an architecture-specific file out of a swiftmodule bundle, try

lib/AST/USRGeneration.cpp

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -342,8 +342,6 @@ bool ide::printExtensionUSR(const ExtensionDecl *ED, raw_ostream &OS) {
342342
}
343343

344344
bool ide::printDeclUSR(const Decl *D, raw_ostream &OS) {
345-
if (D->isImplicit())
346-
return true;
347345
if (auto *VD = dyn_cast<ValueDecl>(D)) {
348346
if (ide::printValueDeclUSR(VD, OS)) {
349347
return true;

lib/Frontend/Frontend.cpp

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -502,9 +502,7 @@ Optional<unsigned> CompilerInstance::getRecordedBufferID(const InputFile &input,
502502
// FIXME: The fact that this test happens twice, for some cases,
503503
// suggests that setupInputs could use another round of refactoring.
504504
if (serialization::isSerializedAST(buffers->ModuleBuffer->getBuffer())) {
505-
PartialModules.push_back(
506-
{std::move(buffers->ModuleBuffer), std::move(buffers->ModuleDocBuffer),
507-
std::move(buffers->ModuleSourceInfoBuffer)});
505+
PartialModules.push_back(std::move(*buffers));
508506
return None;
509507
}
510508
assert(buffers->ModuleDocBuffer.get() == nullptr);
@@ -516,7 +514,7 @@ Optional<unsigned> CompilerInstance::getRecordedBufferID(const InputFile &input,
516514
return bufferID;
517515
}
518516

519-
Optional<CompilerInstance::ModuleBuffers> CompilerInstance::getInputBuffersIfPresent(
517+
Optional<ModuleBuffers> CompilerInstance::getInputBuffersIfPresent(
520518
const InputFile &input) {
521519
if (auto b = input.buffer()) {
522520
return ModuleBuffers(llvm::MemoryBuffer::getMemBufferCopy(b->getBuffer(),

lib/Serialization/ModuleFile.cpp

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1261,7 +1261,7 @@ class ModuleFile::DeclUSRTableInfo {
12611261
std::unique_ptr<ModuleFile::SerializedDeclUSRTable>
12621262
ModuleFile::readDeclUSRsTable(ArrayRef<uint64_t> fields, StringRef blobData) {
12631263
if (fields.empty() || blobData.empty())
1264-
return nullptr;
1264+
return nullptr;
12651265
uint32_t tableOffset = static_cast<uint32_t>(fields.front());
12661266
auto base = reinterpret_cast<const uint8_t *>(blobData.data());
12671267
return std::unique_ptr<SerializedDeclUSRTable>(
@@ -2357,6 +2357,8 @@ Optional<CommentInfo> ModuleFile::getCommentForDecl(const Decl *D) const {
23572357

23582358
if (!DeclCommentTable)
23592359
return None;
2360+
if (D->isImplicit())
2361+
return None;
23602362
// Compute the USR.
23612363
llvm::SmallString<128> USRBuffer;
23622364
llvm::raw_svector_ostream OS(USRBuffer);
@@ -2381,6 +2383,8 @@ ModuleFile::getBasicDeclLocsForDecl(const Decl *D) const {
23812383
// Future compilers may not provide BasicDeclLocsData anymore.
23822384
if (BasicDeclLocsData.empty())
23832385
return None;
2386+
if (D->isImplicit())
2387+
return None;
23842388
// Compute the USR.
23852389
llvm::SmallString<128> USRBuffer;
23862390
llvm::raw_svector_ostream OS(USRBuffer);

lib/Serialization/SerializeDoc.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -591,12 +591,12 @@ class StringWriter {
591591
llvm::SmallString<1024> Buffer;
592592
public:
593593
uint32_t getTextOffset(StringRef Text) {
594-
if (IndexMap.find(Text) == IndexMap.end()) {
595-
IndexMap.insert({Text, Buffer.size()});
594+
auto IterAndIsNew = IndexMap.insert({Text, Buffer.size()});
595+
if (IterAndIsNew.second) {
596596
Buffer.append(Text);
597597
Buffer.push_back('\0');
598598
}
599-
return IndexMap[Text];
599+
return (*IterAndIsNew.first).getValue();
600600
}
601601

602602
void emitSourceFilesRecord(llvm::BitstreamWriter &Out) {

lib/Serialization/SerializedModuleLoader.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -267,10 +267,10 @@ std::error_code SerializedModuleLoaderBase::openModuleDocFile(
267267

268268
void
269269
SerializedModuleLoaderBase::openModuleSourceInfoFileIfPresent(
270-
AccessPathElem ModuleID,
271-
StringRef ModulePath,
272-
StringRef ModuleSourceInfoFilename,
273-
std::unique_ptr<llvm::MemoryBuffer> *ModuleSourceInfoBuffer) {
270+
AccessPathElem ModuleID,
271+
StringRef ModulePath,
272+
StringRef ModuleSourceInfoFilename,
273+
std::unique_ptr<llvm::MemoryBuffer> *ModuleSourceInfoBuffer) {
274274
if (!ModuleSourceInfoBuffer)
275275
return;
276276
llvm::vfs::FileSystem &FS = *Ctx.SourceMgr.getFileSystem();

0 commit comments

Comments
 (0)