Skip to content

Commit 4e39111

Browse files
committed
[Serialization] Serialize mtime with nanosecond precision
There's no reason to lose accuracy here.
1 parent 36cfd10 commit 4e39111

File tree

2 files changed

+6
-5
lines changed

2 files changed

+6
-5
lines changed

lib/Serialization/ModuleFile.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -974,7 +974,7 @@ void ModuleFile::collectBasicSourceFileInfo(
974974
auto fpStr = StringRef{reinterpret_cast<const char *>(Cursor),
975975
Fingerprint::DIGEST_LENGTH};
976976
Cursor += Fingerprint::DIGEST_LENGTH;
977-
// LastModified (seconds since epoch).
977+
// LastModified (nanoseconds since epoch).
978978
auto timestamp = endian::readNext<uint64_t, little, unaligned>(Cursor);
979979
// FileSize (num of bytes).
980980
auto fileSize = endian::readNext<uint64_t, little, unaligned>(Cursor);
@@ -987,7 +987,8 @@ void ModuleFile::collectBasicSourceFileInfo(
987987
BasicSourceFileInfo info;
988988
info.FilePath = filePath;
989989
info.InterfaceHash = Fingerprint::fromString(fpStr);
990-
info.LastModified = llvm::sys::TimePoint<>(std::chrono::seconds(timestamp));
990+
info.LastModified =
991+
llvm::sys::TimePoint<>(std::chrono::nanoseconds(timestamp));
991992
info.FileSize = fileSize;
992993
callback(info);
993994
}

lib/Serialization/SerializeDoc.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -804,7 +804,7 @@ static void emitFileListRecord(llvm::BitstreamWriter &Out,
804804

805805
auto fileID = FWriter.getTextOffset(absolutePath);
806806
auto fingerprintStr = info.InterfaceHash.getRawValue();
807-
auto timestamp = std::chrono::duration_cast<std::chrono::seconds>(
807+
auto timestamp = std::chrono::duration_cast<std::chrono::nanoseconds>(
808808
info.LastModified.time_since_epoch())
809809
.count();
810810

@@ -815,9 +815,9 @@ static void emitFileListRecord(llvm::BitstreamWriter &Out,
815815
// InterfaceHash (fixed length string).
816816
assert(fingerprintStr.size() == Fingerprint::DIGEST_LENGTH);
817817
out << fingerprintStr;
818-
// LastModified.
818+
// LastModified (nanoseconds since epoch).
819819
writer.write<uint64_t>(timestamp);
820-
// FileSize.
820+
// FileSize (num of bytes).
821821
writer.write<uint64_t>(info.FileSize);
822822
}
823823

0 commit comments

Comments
 (0)