[lld] [lld][MachO]Multi-threaded i/o. Twice as fast linking a large project. (PR #147134)
John Holdsworth via llvm-commits
llvm-commits at lists.llvm.org
Sat Jul 12 05:06:47 PDT 2025
================
@@ -282,11 +284,83 @@ static void saveThinArchiveToRepro(ArchiveFile const *file) {
": Archive::children failed: " + toString(std::move(e)));
}
-static InputFile *addFile(StringRef path, LoadType loadType,
- bool isLazy = false, bool isExplicit = true,
- bool isBundleLoader = false,
- bool isForceHidden = false) {
- std::optional<MemoryBufferRef> buffer = readFile(path);
+class DeferredFile {
+public:
+ StringRef path;
+ bool isLazy;
+ std::optional<MemoryBufferRef> buffer;
+ const char *start;
+ size_t size;
+};
+using DeferredFiles = std::vector<DeferredFile>;
+
+class PageInState {
+ DeferredFiles deferred;
+ size_t counter = 0, total = 0, pageSize;
+ std::mutex mutex, *busy;
+
+public:
+ PageInState(DeferredFiles &deferred, std::mutex *busy) {
+ this->deferred = deferred;
+ this->busy = busy;
+ pageSize = llvm::sys::Process::getPageSizeEstimate();
+ }
----------------
johnno1962 wrote:
Thanks for you detailed feedback. I've addressed your points below.
https://github.com/llvm/llvm-project/pull/147134
More information about the llvm-commits
mailing list