civodul pushed a commit to branch main
in repository guile.

commit 4a0c2433d97be9d995b3be74d90bc074d8efb5a7
Author: Ludovic Courtès <l...@gnu.org>
AuthorDate: Mon Apr 15 15:58:30 2024 +0200

    linker: Create sparse files for padding.
    
    Since ‘*lcm-page-size*’ is 64 KiB, this saves disk space for small ‘.go’
    files.
    
    * module/system/vm/linker.scm (link-elf)[write-padding]: Rewrite in
    terms of ‘seek’.
---
 module/system/vm/linker.scm | 14 ++++----------
 1 file changed, 4 insertions(+), 10 deletions(-)

diff --git a/module/system/vm/linker.scm b/module/system/vm/linker.scm
index cf213323e..952e85c30 100644
--- a/module/system/vm/linker.scm
+++ b/module/system/vm/linker.scm
@@ -769,16 +769,10 @@ Returns a bytevector."
            objects)
           bv)
         (lambda (port)
-          (define write-padding
-            (let ((blank (make-bytevector 4096 0)))
-              (lambda (port size)
-                ;; Write SIZE bytes of padding to PORT.
-                (let loop ((size size))
-                  (unless (zero? size)
-                    (let ((count (min size
-                                      (bytevector-length blank))))
-                     (put-bytevector port blank 0 count)
-                     (loop (- size count))))))))
+          (define (write-padding port size)
+            ;; Write SIZE bytes of padding to PORT.  Use 'seek' to
+            ;; create a sparse file.
+            (seek port size SEEK_CUR))
 
           (define (compute-padding objects)
             ;; Return the list of padding in between OBJECTS--the list

Reply via email to