diff options
Diffstat (limited to 'module/system/vm/assembler.scm')
-rw-r--r-- | module/system/vm/assembler.scm | 48 |
1 files changed, 18 insertions, 30 deletions
diff --git a/module/system/vm/assembler.scm b/module/system/vm/assembler.scm index a1d748df7..7fc15b9f2 100644 --- a/module/system/vm/assembler.scm +++ b/module/system/vm/assembler.scm @@ -118,7 +118,6 @@ emit-vector? emit-mutable-vector? emit-immutable-vector? - emit-weak-vector? emit-string? emit-heap-number? emit-hash-table? @@ -583,7 +582,7 @@ N-byte unit." ;; A list of (pos . source) pairs, indicating source information. POS ;; is relative to the beginning of the text section, and SOURCE is in - ;; the same format that source-properties returns. + ;; the same format that syntax-source returns. ;; (sources asm-sources set-asm-sources!) @@ -1302,7 +1301,7 @@ table, its existing label is used directly." (patch! 1 (syntax-expression obj)) (patch! 2 (syntax-wrap obj)) (patch! 3 (syntax-module obj)) - (patch! 4 (syntax-sourcev obj))) + (patch! 4 (syntax-source obj))) ((stringbuf? obj)) ((static-procedure? obj) ;; Special case, as we can't load the procedure's code using @@ -1863,7 +1862,6 @@ should be .data or .rodata), and return the resulting linker object. (define stringbuf-wide-flag #x400) (define tc7-syntax #x3d) - (define syntax-has-source-flag #x100) (define tc7-program #x45) @@ -2012,11 +2010,10 @@ should be .data or .rodata), and return the resulting linker object. (write-placeholder asm buf pos)) ((syntax? obj) - (let ((tag (logior tc7-syntax syntax-has-source-flag))) - (case word-size - ((4) (bytevector-u32-set! buf pos tag endianness)) - ((8) (bytevector-u64-set! buf pos tag endianness)) - (else (error "bad word size")))) + (case word-size + ((4) (bytevector-u32-set! buf pos tc7-syntax endianness)) + ((8) (bytevector-u64-set! buf pos tc7-syntax endianness)) + (else (error "bad word size"))) (write-constant-reference buf (+ pos (* 1 word-size)) (syntax-expression obj)) (write-constant-reference buf (+ pos (* 2 word-size)) @@ -2024,7 +2021,7 @@ should be .data or .rodata), and return the resulting linker object. (write-constant-reference buf (+ pos (* 3 word-size)) (syntax-module obj)) (write-constant-reference buf (+ pos (* 4 word-size)) - (syntax-sourcev obj))) + (syntax-source obj))) ((number? obj) (write-placeholder asm buf pos)) @@ -2901,26 +2898,17 @@ procedure with label @var{rw-init}. @var{rw-init} may be false. If (let lp ((sources (asm-sources asm)) (out '())) (match sources - (((pc . location) . sources) - (let-values (((file line col) - ;; Usually CPS records contain a "source - ;; vector" coming from tree-il, but some might - ;; contain a source property alist. - (match location - (#(file line col) (values file line col)) - (lst (values (assq-ref lst 'filename) - (assq-ref lst 'line) - (assq-ref lst 'column)))))) - (lp sources - ;; Guile line and column numbers are 0-indexed, but - ;; they are 1-indexed for DWARF. - (if (and line col) - (cons (list pc - (if (string? file) (intern-file file) 0) - (1+ line) - (1+ col)) - out) - out)))) + (((pc . #(file line col)) . sources) + (lp sources + ;; Guile line and column numbers are 0-indexed, but + ;; they are 1-indexed for DWARF. + (if (and line col) + (cons (list pc + (if (string? file) (intern-file file) 0) + (1+ line) + (1+ col)) + out) + out))) (() ;; Compilation unit header for .debug_line. We write in ;; DWARF 2 format because more tools understand it than DWARF |