;;;; LAP Code Generation
-;;; $Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/back/lapgn1.scm,v 1.21 1986/12/20 23:48:34 cph Exp $
+;;; $Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/back/lapgn1.scm,v 1.22 1986/12/21 14:52:04 cph Exp $
(declare (usual-integrations))
(using-syntax (access compiler-syntax-table compiler-package)
(*code-object-label*)
(*code-object-entry*))
(for-each (lambda (quotation)
- (cgen-cfg quotation quotation-rtl))
+ (cgen-cfg quotation quotation-rtl-entry))
quotations)
(for-each (lambda (procedure)
- (cgen-cfg procedure procedure-rtl))
+ (cgen-cfg procedure procedure-rtl-entry))
procedures)
(for-each (lambda (continuation)
- (cgen-cfg continuation continuation-rtl))
+ (cgen-cfg continuation continuation-rtl-entry))
continuations)
(receiver *interned-constants* *block-start-label*)))))
-(define (cgen-cfg object extract-cfg)
+(define (cgen-cfg object extract-entry)
(set! *code-object-label* (code-object-label-initialize object))
- (let ((rnode (cfg-entry-node (extract-cfg object))))
+ (let ((rnode (extract-entry object)))
(set! *code-object-entry* rnode)
(cgen-rnode rnode)))
;;;; Control Flow Graph Abstraction
-;;; $Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/base/cfg1.scm,v 1.144 1986/12/20 23:48:20 cph Exp $
+;;; $Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/base/cfg1.scm,v 1.145 1986/12/21 14:51:38 cph Exp $
(declare (usual-integrations))
(using-syntax (access compiler-syntax-table compiler-package)
(let ((next (edge-right-node edge)))
(edge-disconnect-right! edge)
(edge-connect-right! edge snode)
- (create-edge! snode set-snode-next! next)))
+ (create-edge! snode set-snode-next-edge! next)))
(define (node-insert-snode! node snode)
(let ((previous-edges (node-previous-edges node)))
(edges-disconnect-right! previous-edges)
(edges-connect-right! previous-edges snode)
- (create-edge! snode set-snode-next! node)))
+ (create-edge! snode set-snode-next-edge! node)))
\f
;;;; Previous Connections
(let ((node (make-noop-node)))
(make-pcfg node
'()
- (list (make-hook node set-snode-next!)))))
+ (list (make-hook node set-snode-next-edge!)))))
(define (make-true-pcfg)
(let ((node (make-noop-node)))
(make-pcfg node
- (list (make-hook node set-snode-next!))
+ (list (make-hook node set-snode-next-edge!))
'())))
\f
;;;; Miscellaneous
\f
;;;; CFG Construction
+(define (cfg-entry-edge cfg)
+ (let ((edge (make-edge false false false)))
+ (edge-connect-right! edge (cfg-entry-node cfg))
+ edge))
+
(define-integrable (scfg-next-connect! scfg cfg)
(hooks-connect! (scfg-next-hooks scfg) (cfg-entry-node cfg)))
;;;; Compiler CFG Datatypes
-;;; $Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/base/ctypes.scm,v 1.37 1986/12/20 22:51:33 cph Exp $
+;;; $Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/base/ctypes.scm,v 1.38 1986/12/21 14:51:50 cph Exp $
(declare (usual-integrations))
(using-syntax (access compiler-syntax-table compiler-package)
(define-integrable (make-unbound-test block variable)
(pnode->pcfg (make-pnode unbound-test-tag block variable)))
-
+\f
(define-snode combination block compilation-type value operator operands
procedures known-operator)
(define *combinations*)
(cons combination (vnode-combinations value)))
(snode->scfg combination)))
-(define-snode continuation rtl delta label)
+(define-snode continuation rtl-edge delta label)
(define *continuations*)
(define-integrable (make-continuation rtl delta)
(let ((continuation
- (make-snode continuation-tag rtl delta
+ (make-snode continuation-tag (cfg-entry-edge rtl) delta
(generate-label 'CONTINUATION))))
(set! *continuations* (cons continuation *continuations*))
continuation))
+(define-integrable (continuation-rtl-entry continuation)
+ (edge-right-node (continuation-rtl-edge continuation)))
+
(define-unparser continuation-tag
(lambda (continuation)
(write (continuation-label continuation))))
;;;; Compiler Macros
-;;; $Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/base/macros.scm,v 1.53 1986/12/20 22:52:39 cph Exp $
+;;; $Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/base/macros.scm,v 1.54 1986/12/21 14:52:26 cph Exp $
(declare (usual-integrations))
\f
((symbol? (car pattern))
(if-lambda pattern body))
(else
- (error "Illegal name" parse-lambda-syntax (car pattern))))))
+ (error "Illegal name" parse-define-syntax (car pattern))))))
((symbol? pattern)
(if-variable pattern body))
(else
- (error "Illegal name" parse-lambda-syntax pattern))))
+ (error "Illegal name" parse-define-syntax pattern))))
(define lambda-list->bound-names
(let ((accumulate
;;;; Compiler Utilities
-;;; $Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/base/utils.scm,v 1.77 1986/12/20 22:54:13 cph Exp $
+;;; $Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/base/utils.scm,v 1.78 1986/12/21 14:52:59 cph Exp $
(declare (usual-integrations))
(using-syntax (access compiler-syntax-table compiler-package)
(define-scode-operator in-package-components)
(define-scode-operator lambda-components)
(define-scode-operator lambda?)
+ (define-scode-operator make-access)
(define-scode-operator make-combination)
(define-scode-operator make-conditional)
(define-scode-operator make-definition)
;;;; RTL Generation
-;;; $Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/rtlgen/rtlgen.scm,v 1.1 1986/12/20 22:53:46 cph Exp $
+;;; $Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/rtlgen/rtlgen.scm,v 1.2 1986/12/21 14:52:34 cph Exp $
(declare (usual-integrations))
(using-syntax (access compiler-syntax-table compiler-package)
(define (generate:quotation quotation)
(set-quotation-rtl! quotation
- (generate:cfg (quotation-cfg quotation) 0)))
+ (generate:cfg (quotation-fg-entry quotation) 0)))
(define (generate:procedure procedure)
(set-procedure-rtl!
((stack-procedure? procedure) generate:stack-procedure)
(else (error "Unknown procedure type" procedure)))
procedure
- (generate:cfg (procedure-cfg procedure) 0))))
+ (generate:cfg (procedure-fg-entry procedure) 0))))
\f
(define (generate:closure-procedure procedure cfg)
(scfg-append! (if (or (not (null? (procedure-optional procedure)))