us more freedom in choosing the target register.
#| -*-Scheme-*-
-$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/machines/bobcat/make.scm-68040,v 4.28 1988/11/06 14:55:10 cph Exp $
+$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/machines/bobcat/make.scm-68040,v 4.29 1988/11/08 11:17:29 cph Exp $
Copyright (c) 1988 Massachusetts Institute of Technology
((package/reference (find-package name) 'INITIALIZE-PACKAGE!)))
'((COMPILER MACROS)
(COMPILER DECLARATIONS)))
-(add-system! (make-system "Liar" 4 28 '()))
\ No newline at end of file
+(add-system! (make-system "Liar" 4 29 '()))
\ No newline at end of file
#| -*-Scheme-*-
-$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/machines/bobcat/rules3.scm,v 4.12 1988/11/01 22:52:45 jinx Exp $
+$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/machines/bobcat/rules3.scm,v 4.13 1988/11/08 11:11:27 cph Exp $
Copyright (c) 1988 Massachusetts Institute of Technology
(B GE B (@PCR ,gc-label))))))
(define-rule statement
- (CONS-CLOSURE (ENTRY:PROCEDURE (? internal-label)) (? min) (? max) (? size))
- (let* ((temp (allocate-temporary-register! 'ADDRESS))
- (temp-ref (register-reference temp)))
+ (ASSIGN (REGISTER (? target))
+ (CONS-POINTER (CONSTANT (? type))
+ (CONS-CLOSURE (ENTRY:PROCEDURE (? internal-label))
+ (? min) (? max) (? size))))
+ (QUALIFIER (pseudo-register? target))
+ (let ((temporary (reference-temporary-register! 'ADDRESS))
+ (target (reference-target-alias! target 'DATA)))
(LAP (LEA (@PCR ,(rtl-procedure/external-label
(label->object internal-label)))
- ,temp-ref)
- ,(load-non-pointer (ucode-type manifest-closure) (+ 3 size)
+ ,temporary)
+ ,(load-non-pointer (ucode-type manifest-closure)
+ (+ 3 size)
(INST-EA (@A+ 5)))
- (MOVE L (& ,(+ (* (make-procedure-code-word min max) #x10000)
- #x8))
+ (MOVE L (& ,(+ (* (make-procedure-code-word min max) #x10000) 8))
(@A+ 5))
- (MOVE L (A 5) ,reg:enclose-result)
- (MOVE B (& ,(ucode-type compiled-entry)) ,reg:enclose-result)
- (MOVE W (& #x4eb9) (@A+ 5)) ; (JSR (L <entry>))
- (MOVE L ,temp-ref (@A+ 5))
+ (MOVE L (A 5) ,target)
+ (OR L (& ,(make-non-pointer-literal type 0)) ,target)
+ (MOVE W (& #x4eb9) (@A+ 5)) ; (JSR (L <entry>))
+ (MOVE L ,temporary (@A+ 5))
(CLR W (@A+ 5))
,@(increment-machine-register 13 size))))
\f
#| -*-Scheme-*-
-$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/rtlgen/rgproc.scm,v 4.4 1988/11/01 04:55:01 jinx Exp $
+$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/rtlgen/rgproc.scm,v 4.5 1988/11/08 11:14:32 cph Exp $
Copyright (c) 1988 Massachusetts Institute of Technology
(error "Letrec value is trivial closure" value)
(recvr (make-null-cfg)
(make-trivial-closure-cons value)))
- (recvr (make-non-trivial-closure-cons value)
- (rtl:interpreter-call-result:enclose))))
+ (recvr (make-null-cfg)
+ (make-non-trivial-closure-cons value))))
((IC)
(make-ic-cons value 'USE-ENV recvr))
((OPEN-EXTERNAL OPEN-INTERNAL)
d3 1
a4 1
-$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/rtlgen/rgrval.scm,v 4.10 1988/11/04 10:28:39 cph Exp $
+$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/rtlgen/rgrval.scm,v 4.11 1988/11/08 11:14:49 cph Exp $
#| -*-Scheme-*-
Copyright (c) 1988 Massachusetts Institute of Technology
-$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/rtlgen/rgrval.scm,v 4.10 1988/11/04 10:28:39 cph Exp $
+$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/rtlgen/rgrval.scm,v 4.11 1988/11/08 11:14:49 cph Exp $
Copyright (c) 1988, 1990 Massachusetts Institute of Technology
(load-temporary-register
(lambda (assignment reference)
(return-2
- (scfg-append!
- (make-non-trivial-closure-cons procedure)
+ (scfg*scfg->scfg!
assignment
(load-closure-environment procedure offset reference))
reference))
- (rtl:interpreter-call-result:enclose)
+ (make-non-trivial-closure-cons procedure)
identity-procedure)))
(else
(make-ic-cons procedure offset
(rtl:make-entry:procedure (procedure-label procedure))))
(define (make-non-trivial-closure-cons procedure)
- (with-procedure-arity-encoding procedure
- (lambda (min max)
- (rtl:make-cons-closure
- (rtl:make-entry:procedure (procedure-label procedure))
- min
- max
- (procedure-closure-size procedure)))))
+ (rtl:make-cons-pointer
+ (rtl:make-constant type-code:compiled-entry)
+ (with-procedure-arity-encoding procedure
+ (lambda (min max)
+ (rtl:make-cons-closure
+ (rtl:make-entry:procedure (procedure-label procedure))
+ min
+ max
+ (procedure-closure-size procedure))))))
(define (with-procedure-arity-encoding procedure receiver)
(let* ((min (1+ (length (procedure-required-arguments procedure))))
#| -*-Scheme-*-
-$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/rtlopt/rcse1.scm,v 4.14 1988/11/05 02:59:48 cph Exp $
+$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/rtlopt/rcse1.scm,v 4.15 1988/11/08 11:15:07 cph Exp $
Copyright (c) 1988 Massachusetts Institute of Technology
(define-trivial-one-arg-method 'INVOCATION:LOOKUP
rtl:invocation:lookup-environment rtl:set-invocation:lookup-environment!)
-(define-cse-method 'CONS-CLOSURE
- (lambda (statement)
- statement
- (expression-invalidate! (interpreter-register:enclose))))
-
(define-cse-method 'INVOCATION-PREFIX:MOVE-FRAME-UP
(lambda (statement)
(expression-replace! rtl:invocation-prefix:move-frame-up-locative