From 9ed7c25689cf8531d0b952e1e5433744d4a045f3 Mon Sep 17 00:00:00 2001 From: Chris Hanson Date: Tue, 21 Jul 1987 22:40:30 +0000 Subject: [PATCH] Fix order-of-events bug in open-coded consing. --- v7/src/compiler/rtlbase/rtlcon.scm | 37 +++++++++++++++--------------- 1 file changed, 19 insertions(+), 18 deletions(-) diff --git a/v7/src/compiler/rtlbase/rtlcon.scm b/v7/src/compiler/rtlbase/rtlcon.scm index 884c70e6f..9cbdfcb25 100644 --- a/v7/src/compiler/rtlbase/rtlcon.scm +++ b/v7/src/compiler/rtlbase/rtlcon.scm @@ -1,6 +1,6 @@ #| -*-Scheme-*- -$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/rtlbase/rtlcon.scm,v 1.10 1987/07/03 18:56:57 cph Exp $ +$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/rtlbase/rtlcon.scm,v 1.11 1987/07/21 22:40:30 cph Exp $ Copyright (c) 1987 Massachusetts Institute of Technology @@ -289,13 +289,13 @@ MIT in each case. |# (define-expression-method 'CELL-CONS (lambda (receiver scfg-append! expression) - (let ((free (interpreter-free-pointer))) - (assign-to-temporary - (rtl:make-cons-pointer (rtl:make-constant type-code:cell) free) - scfg-append! - (lambda (temporary) - (expression-simplify expression scfg-append! - (lambda (expression) + (expression-simplify expression scfg-append! + (lambda (expression) + (let ((free (interpreter-free-pointer))) + (assign-to-temporary + (rtl:make-cons-pointer (rtl:make-constant type-code:cell) free) + scfg-append! + (lambda (temporary) (scfg-append! (%make-assign (rtl:make-post-increment free 1) expression) (receiver temporary))))))))) @@ -313,16 +313,17 @@ MIT in each case. |# (let ((target (rtl:make-post-increment free 1))) (expression-simplify type scfg-append! (lambda (type) - (assign-to-temporary (rtl:make-cons-pointer type free) scfg-append! - (lambda (temporary) - (expression-simplify car scfg-append! - (lambda (car) - (scfg-append! - (%make-assign target car) - (expression-simplify cdr scfg-append! - (lambda (cdr) - (scfg-append! (%make-assign target cdr) - (receiver temporary))))))))))))))) + (expression-simplify car scfg-append! + (lambda (car) + (expression-simplify cdr scfg-append! + (lambda (cdr) + (assign-to-temporary (rtl:make-cons-pointer type free) + scfg-append! + (lambda (temporary) + (scfg-append! + (%make-assign target car) + (scfg-append! (%make-assign target cdr) + (receiver temporary))))))))))))))) (define-expression-method 'OBJECT->TYPE (lambda (receiver scfg-append! expression) -- 2.25.1