From d439a3f671da8880c14044d0b7cd106b9ebbc391 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Fri, 6 Jan 2023 17:06:47 +0100 Subject: assembler: Separate effectful part of 'link-docstrs'. * module/system/vm/assembler.scm (link-docstrs): Define 'write-docstrings!' and use it. --- module/system/vm/assembler.scm | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/module/system/vm/assembler.scm b/module/system/vm/assembler.scm index 872cc31c6..e82eb953a 100644 --- a/module/system/vm/assembler.scm +++ b/module/system/vm/assembler.scm @@ -2684,16 +2684,19 @@ procedure with label @var{rw-init}. @var{rw-init} may be false. If (docstrings (find-docstrings)) (strtab (make-string-table)) (bv (make-bytevector (* (length docstrings) docstr-size) 0))) - (fold (lambda (pair pos) - (match pair - ((pc . string) - (bytevector-u32-set! bv pos pc endianness) - (bytevector-u32-set! bv (+ pos 4) - (string-table-intern! strtab string) - endianness) - (+ pos docstr-size)))) - 0 - docstrings) + (define (write-docstrings! bv offset) + (fold (lambda (pair pos) + (match pair + ((pc . string) + (bytevector-u32-set! bv pos pc endianness) + (bytevector-u32-set! bv (+ pos 4) + (string-table-intern! strtab string) + endianness) + (+ pos docstr-size)))) + offset + docstrings)) + + (write-docstrings! bv 0) (let ((strtab (make-object asm '.guile.docstrs.strtab (link-string-table! strtab) '() '() -- cgit v1.2.1