[llvm] [llvm-rtdyld] Precalculate required memory upfront (PR #72254)

via llvm-commits llvm-commits at lists.llvm.org
Tue Nov 14 05:49:27 PST 2023


github-actions[bot] wrote:

<!--LLVM CODE FORMAT COMMENT: {clang-format}-->


:warning: C/C++ code formatter, clang-format found issues in your code. :warning:

<details>
<summary>
You can test this locally with the following command:
</summary>

``````````bash
git-clang-format --diff da843aa09f4cb5caab1cf0c802f2d203ada84c54 8442c0fd63c42558534f9b33f4f6efdc8305aca7 -- llvm/include/llvm/ExecutionEngine/RuntimeDyld.h llvm/lib/ExecutionEngine/RuntimeDyld/RuntimeDyld.cpp llvm/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldImpl.h llvm/tools/llvm-rtdyld/llvm-rtdyld.cpp
``````````

</details>

<details>
<summary>
View the diff from clang-format here.
</summary>

``````````diff
diff --git a/llvm/include/llvm/ExecutionEngine/RuntimeDyld.h b/llvm/include/llvm/ExecutionEngine/RuntimeDyld.h
index 423715453b..c715ec8884 100644
--- a/llvm/include/llvm/ExecutionEngine/RuntimeDyld.h
+++ b/llvm/include/llvm/ExecutionEngine/RuntimeDyld.h
@@ -196,8 +196,9 @@ public:
 
   /// TODO
   Error precalculateMemorySize(const object::ObjectFile &Obj,
-    uint64_t &CodeSize, Align &CodeAlign, uint64_t &RODataSize, Align
-    &RODataAlign, uint64_t &RWDataSize, Align &RWDataAlign);
+                               uint64_t &CodeSize, Align &CodeAlign,
+                               uint64_t &RODataSize, Align &RODataAlign,
+                               uint64_t &RWDataSize, Align &RWDataAlign);
 
   /// Add the referenced object file to the list of objects to be loaded and
   /// relocated.
diff --git a/llvm/lib/ExecutionEngine/RuntimeDyld/RuntimeDyld.cpp b/llvm/lib/ExecutionEngine/RuntimeDyld/RuntimeDyld.cpp
index 83cafa2d4e..f95acafe9b 100644
--- a/llvm/lib/ExecutionEngine/RuntimeDyld/RuntimeDyld.cpp
+++ b/llvm/lib/ExecutionEngine/RuntimeDyld/RuntimeDyld.cpp
@@ -1345,18 +1345,19 @@ createRuntimeDyldMachO(
   return Dyld;
 }
 
-Error RuntimeDyld::precalculateMemorySize(
-    const ObjectFile &Obj, uint64_t &CodeSize, Align &CodeAlign,
-    uint64_t &RODataSize, Align &RODataAlign, uint64_t &RWDataSize,
-    Align &RWDataAlign) {
+Error RuntimeDyld::precalculateMemorySize(const ObjectFile &Obj,
+                                          uint64_t &CodeSize, Align &CodeAlign,
+                                          uint64_t &RODataSize,
+                                          Align &RODataAlign,
+                                          uint64_t &RWDataSize,
+                                          Align &RWDataAlign) {
   if (!Dyld) {
     if (!Obj.isELF())
       report_fatal_error("Incompatible object format!");
 
-      Dyld =
-          createRuntimeDyldELF(static_cast<Triple::ArchType>(Obj.getArch()),
-                               MemMgr, Resolver, ProcessAllSections,
-                               std::move(NotifyStubEmitted));
+    Dyld = createRuntimeDyldELF(static_cast<Triple::ArchType>(Obj.getArch()),
+                                MemMgr, Resolver, ProcessAllSections,
+                                std::move(NotifyStubEmitted));
   }
   if (!Dyld->isCompatibleFile(Obj))
     report_fatal_error("Incompatible object format!");
@@ -1366,7 +1367,6 @@ Error RuntimeDyld::precalculateMemorySize(
   return Err;
 }
 
-
 std::unique_ptr<RuntimeDyld::LoadedObjectInfo>
 RuntimeDyld::loadObject(const ObjectFile &Obj) {
   if (!Dyld) {
diff --git a/llvm/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldImpl.h b/llvm/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldImpl.h
index 75caf01955..285de95698 100644
--- a/llvm/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldImpl.h
+++ b/llvm/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldImpl.h
@@ -428,9 +428,6 @@ protected:
   unsigned computeSectionStubBufSize(const ObjectFile &Obj,
                                      const SectionRef &Section);
 
-
-
-
   // Implementation of the generic part of the loadObject algorithm.
   Expected<ObjSectionToIDMap> loadObjectImpl(const object::ObjectFile &Obj);
 
@@ -460,14 +457,13 @@ public:
 
   virtual ~RuntimeDyldImpl();
 
-// Compute an upper bound of the memory that is required to load all
+  // Compute an upper bound of the memory that is required to load all
   // sections
   Error computeTotalAllocSize(const ObjectFile &Obj, uint64_t &CodeSize,
                               Align &CodeAlign, uint64_t &RODataSize,
                               Align &RODataAlign, uint64_t &RWDataSize,
                               Align &RWDataAlign);
 
-
   void setProcessAllSections(bool ProcessAllSections) {
     this->ProcessAllSections = ProcessAllSections;
   }
diff --git a/llvm/tools/llvm-rtdyld/llvm-rtdyld.cpp b/llvm/tools/llvm-rtdyld/llvm-rtdyld.cpp
index a89c9ce486..fc7a654c11 100644
--- a/llvm/tools/llvm-rtdyld/llvm-rtdyld.cpp
+++ b/llvm/tools/llvm-rtdyld/llvm-rtdyld.cpp
@@ -556,7 +556,6 @@ static int executeInput() {
   uint64_t TotalRODataSize = 0;
   uint64_t TotalRWDataSize = 0;
 
-
   // If we don't have any input files, read from stdin.
   if (!InputFileList.size()) {
     InputFileList.push_back("-");
@@ -590,8 +589,9 @@ static int executeInput() {
       uint64_t CodeSize, RODataSize, RWDataSize;
       Align CodeAlign, RODataAlign, RWDataAlign;
 
-      Error Err = Dyld.precalculateMemorySize(Obj, CodeSize, CodeAlign,
-		      RODataSize, RODataAlign, RWDataSize, RWDataAlign);
+      Error Err =
+          Dyld.precalculateMemorySize(Obj, CodeSize, CodeAlign, RODataSize,
+                                      RODataAlign, RWDataSize, RWDataAlign);
       if (Err)
         ErrorAndExit("Can't compute total size");
 
@@ -600,7 +600,7 @@ static int executeInput() {
       TotalRWDataSize += RWDataSize;
     }
 
-    if  (!PreallocMemory)
+    if (!PreallocMemory)
       PreallocMemory = TotalCodeSize + TotalRODataSize + TotalRWDataSize;
     doPreallocation(MemMgr);
 

``````````

</details>


https://github.com/llvm/llvm-project/pull/72254


More information about the llvm-commits mailing list