From 59cb81ef2bd31684777b6537b7385cbc8e5c2d2f Mon Sep 17 00:00:00 2001 From: "Guillermo J. Rozas" Date: Mon, 6 May 1991 22:47:15 +0000 Subject: [PATCH] - Add use of compiler:intersperse-rtl-in-lap? - Pass *interned-global-links* and *interned-static-variables* to generate/constants-block. --- v7/src/compiler/back/lapgn1.scm | 78 +++++++++++++++++++-------------- 1 file changed, 44 insertions(+), 34 deletions(-) diff --git a/v7/src/compiler/back/lapgn1.scm b/v7/src/compiler/back/lapgn1.scm index a69d66c30..6507bd523 100644 --- a/v7/src/compiler/back/lapgn1.scm +++ b/v7/src/compiler/back/lapgn1.scm @@ -1,6 +1,6 @@ #| -*-Scheme-*- -$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/back/lapgn1.scm,v 4.10 1991/05/02 06:10:03 jinx Exp $ +$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/back/lapgn1.scm,v 4.11 1991/05/06 22:47:15 jinx Exp $ Copyright (c) 1987-1991 Massachusetts Institute of Technology @@ -39,41 +39,48 @@ MIT in each case. |# (define *current-bblock*) (define *pending-bblocks*) +(define *insert-rtl?*) (define (generate-lap rgraphs remote-links process-constants-block) - (with-new-node-marks - (lambda () - (for-each cgen-rgraph rgraphs) - (for-each (lambda (remote-link) - (vector-set! remote-link - 0 - (constant->label (vector-ref remote-link 0))) - unspecific) - remote-links) - (with-values - (lambda () - (generate/constants-block *interned-constants* - *interned-variables* - *interned-assignments* - *interned-uuo-links*)) - (or process-constants-block - (lambda (constants-code environment-label free-ref-label n-sections) - (LAP ,@constants-code - ,@(generate/quotation-header environment-label - (or free-ref-label - environment-label) - n-sections) - ,@(let loop ((remote-links remote-links)) - (if (null? remote-links) - (LAP) - (LAP ,@(let ((remote-link (car remote-links))) - (generate/remote-link - (vector-ref remote-link 0) - (vector-ref remote-link 1) - (or (vector-ref remote-link 2) - (vector-ref remote-link 1)) - (vector-ref remote-link 3))) - ,@(loop (cdr remote-links)))))))))))) + (fluid-let ((*insert-rtl?* + (and compiler:generate-lap-files? + compiler:intersperse-rtl-in-lap?))) + (with-new-node-marks + (lambda () + (for-each cgen-rgraph rgraphs) + (for-each (lambda (remote-link) + (vector-set! remote-link + 0 + (constant->label (vector-ref remote-link 0))) + unspecific) + remote-links) + (with-values + (lambda () + (generate/constants-block *interned-constants* + *interned-variables* + *interned-assignments* + *interned-uuo-links* + *interned-global-links* + *interned-static-variables*)) + (or process-constants-block + (lambda (constants-code environment-label free-ref-label + n-sections) + (LAP ,@constants-code + ,@(generate/quotation-header environment-label + (or free-ref-label + environment-label) + n-sections) + ,@(let loop ((remote-links remote-links)) + (if (null? remote-links) + (LAP) + (LAP ,@(let ((remote-link (car remote-links))) + (generate/remote-link + (vector-ref remote-link 0) + (vector-ref remote-link 1) + (or (vector-ref remote-link 2) + (vector-ref remote-link 1)) + (vector-ref remote-link 3))) + ,@(loop (cdr remote-links))))))))))))) (define (cgen-rgraph rgraph) (fluid-let ((*current-rgraph* rgraph) @@ -165,6 +172,9 @@ MIT in each case. |# (let ((instructions (match-result))) (delete-dead-registers!) (LAP ,@*prefix-instructions* + ,@(if *insert-rtl?* + (LAP (COMMENT (RTL ,rtl))) + (LAP)) ,@instructions ,@*suffix-instructions*)))) (begin (error "CGEN-RINST: No matching rules" rtl) -- 2.25.1