From 35ae04ffe922e93a187358a93fe19c76517fe297 Mon Sep 17 00:00:00 2001 From: "Guillermo J. Rozas" Date: Thu, 12 Jul 1990 16:42:39 +0000 Subject: [PATCH] Fix bug in disassembler/write-linkage-section by which only even-numbered variable caches were being printed. --- v7/src/compiler/machines/bobcat/dassm1.scm | 46 ++++++++++++---------- 1 file changed, 25 insertions(+), 21 deletions(-) diff --git a/v7/src/compiler/machines/bobcat/dassm1.scm b/v7/src/compiler/machines/bobcat/dassm1.scm index 73ce7452e..65b08031f 100644 --- a/v7/src/compiler/machines/bobcat/dassm1.scm +++ b/v7/src/compiler/machines/bobcat/dassm1.scm @@ -1,6 +1,6 @@ #| -*-Scheme-*- -$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/machines/bobcat/dassm1.scm,v 4.14 1989/10/26 07:37:28 cph Exp $ +$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/machines/bobcat/dassm1.scm,v 4.15 1990/07/12 16:42:39 jinx Rel $ Copyright (c) 1988, 1989 Massachusetts Institute of Technology @@ -198,22 +198,24 @@ MIT in each case. |# (else false))) (define (disassembler/write-linkage-section block symbol-table index) - (define (write-caches index size how-many writer) - (let loop ((index index) (how-many how-many)) - (if (zero? how-many) - 'DONE - (begin - (disassembler/write-instruction - symbol-table - (compiled-code-block/index->offset index) - (lambda () - (writer block index))) - (loop (+ size index) (-1+ how-many)))))) - (let* ((field (object-datum (system-vector-ref block index))) (descriptor (integer-divide field #x10000))) (let ((kind (integer-divide-quotient descriptor)) (length (integer-divide-remainder descriptor))) + + (define (write-caches size writer) + (let loop ((index (1+ index)) + (how-many (quotient length size))) + (if (zero? how-many) + 'DONE + (begin + (disassembler/write-instruction + symbol-table + (compiled-code-block/index->offset index) + (lambda () + (writer block index))) + (loop (+ size index) (-1+ how-many)))))) + (disassembler/write-instruction symbol-table (compiled-code-block/index->offset index) @@ -221,22 +223,24 @@ MIT in each case. |# (write-string "#[LINKAGE-SECTION ") (write field) (write-string "]"))) - (write-caches - (1+ index) - compiled-code-block/objects-per-procedure-cache - (quotient length compiled-code-block/objects-per-procedure-cache) (case kind ((0) - disassembler/write-procedure-cache) + (write-caches + compiled-code-block/objects-per-procedure-cache + disassembler/write-procedure-cache)) ((1) + (write-caches + compiled-code-block/objects-per-variable-cache (lambda (block index) - (disassembler/write-variable-cache "Reference" block index))) + (disassembler/write-variable-cache "Reference" block index)))) ((2) + (write-caches + compiled-code-block/objects-per-variable-cache (lambda (block index) - (disassembler/write-variable-cache "Assignment" block index))) + (disassembler/write-variable-cache "Assignment" block index)))) (else (error "disassembler/write-linkage-section: Unknown section kind" - kind)))) + kind))) (1+ (+ index length))))) (define-integrable (variable-cache-name cache) -- 2.25.1