From: Stephen Adams Date: Mon, 27 Feb 1995 22:38:15 +0000 (+0000) Subject: Tweaked with if to make it do the old general cps style for BEGIN X-Git-Tag: 20090517-FFI~6590 X-Git-Url: https://birchwood-abbey.net/git?a=commitdiff_plain;h=8b503edc893fef80840fb490b40e482803c6cb87;p=mit-scheme.git Tweaked with if to make it do the old general cps style for BEGIN actions because rtlgen doesnt like (begin (if x x y) ...). rtlgen should be fixed too. --- diff --git a/v8/src/compiler/midend/cpsconv.scm b/v8/src/compiler/midend/cpsconv.scm index 88989235d..5e3519451 100644 --- a/v8/src/compiler/midend/cpsconv.scm +++ b/v8/src/compiler/midend/cpsconv.scm @@ -1,6 +1,6 @@ #| -*-Scheme-*- -$Id: cpsconv.scm,v 1.6 1995/02/27 17:33:45 adams Exp $ +$Id: cpsconv.scm,v 1.7 1995/02/27 22:38:15 adams Exp $ Copyright (c) 1994 Massachusetts Institute of Technology @@ -295,26 +295,35 @@ MIT in each case. |# next))))))) (define-cps-converter IF (cont pred conseq alt) - (if (form/simple? pred) - (if (and (not (eq? (cpsconv/cont/kind cont) 'NAMED)) - (form/pseudo-simple? conseq) - (form/pseudo-simple? alt)) - (cpsconv/return form cont (cpsconv/simple/copy form)) - `(IF ,(cpsconv/simple/copy pred) - ,(cpsconv/expr cont conseq) - ,(cpsconv/expr cont alt))) - ;; This does anchor pointing by default? - (let ((consname (cpsconv/new-name 'CONS)) - (altname (cpsconv/new-name 'ALT)) - (ignore1 (cpsconv/new-ignored-continuation)) - (ignore2 (cpsconv/new-ignored-continuation))) - `(LET ((,consname (LAMBDA (,ignore1) ,(cpsconv/expr cont conseq))) - (,altname (LAMBDA (,ignore2) ,(cpsconv/expr cont alt)))) - ,(cpsconv/expr - (cpsconv/predicate-continuation - consname altname - (cpsconv/dbg-continuation/make 'PREDICATE form pred)) - pred))))) + (define (general) + ;; This does anchor pointing by default? + (let ((cons-name (cpsconv/new-name 'CONS)) + (alt-name (cpsconv/new-name 'ALT)) + (ignore1 (cpsconv/new-ignored-continuation)) + (ignore2 (cpsconv/new-ignored-continuation))) + `(LET ((,cons-name (LAMBDA (,ignore1) ,(cpsconv/expr cont conseq))) + (,alt-name (LAMBDA (,ignore2) ,(cpsconv/expr cont alt)))) + ,(cpsconv/expr + (cpsconv/predicate-continuation + cons-name alt-name + (cpsconv/dbg-continuation/make 'PREDICATE form pred)) + pred)))) + (define (really-simple) + (cpsconv/return form cont (cpsconv/simple/copy form))) + (define (simple-predicate) + `(IF ,(cpsconv/simple/copy pred) + ,(cpsconv/expr cont conseq) + ,(cpsconv/expr cont alt))) + (cond ((eq? (cpsconv/cont/kind cont) 'BEGIN) + (general)) + ((not (form/simple? pred)) + (general)) + ((and (not (eq? (cpsconv/cont/kind cont) 'NAMED)) + (form/pseudo-simple? conseq) + (form/pseudo-simple? alt)) + (really-simple)) + (else + (simple-predicate)))) (define (cpsconv/expr cont expr) (if (not (pair? expr))