locative-level rtl and "real" rtl.
#| -*-Scheme-*-
-$Id: rtlcon.scm,v 4.26 1993/07/01 03:25:31 gjr Exp $
+$Id: rtlcon.scm,v 4.27 1993/07/09 00:15:05 gjr Exp $
Copyright (c) 1988-1993 Massachusetts Institute of Technology
(lambda (receiver scfg-append!)
scfg-append! ;ignore
(lambda (address offset granularity)
- (if (not (eq? granularity 'OBJECT))
- (error "can't take address of non-object offset" granularity))
(receiver
- (if (zero? offset)
- address
- (rtl:make-offset-address address
- (rtl:make-machine-constant offset))))))))
+ (case granularity
+ ((OBJECT)
+ (if (zero? offset)
+ address
+ (rtl:make-offset-address address
+ (rtl:make-machine-constant offset))))
+ ((BYTE)
+ (rtl:make-byte-offset-address address
+ (rtl:make-machine-constant offset)))
+ ((FLOAT)
+ (rtl:make-float-offset-address address
+ (rtl:make-machine-constant offset)))
+ (else
+ (error "ADDRESS: Unknown granularity" granularity))))))))
(define-expression-method 'ENVIRONMENT
(address-method
#| -*-Scheme-*-
-$Id: rgcomb.scm,v 4.19 1993/07/08 21:56:26 gjr Exp $
+$Id: rgcomb.scm,v 4.20 1993/07/09 00:15:10 gjr Exp $
Copyright (c) 1988-1993 Massachusetts Institute of Technology
(let ((locative
(rtl:locative-offset
(rtl:make-fetch (interpreter-stack-pointer))
- (rtl:make-machine-constant (stack->memory-offset 0)))))
+ (stack->memory-offset 0))))
(scfg*scfg->scfg!
- (rtl:make-assignment
- locative
- (rtl:bump-closure (rtl:make-fetch locative)
- (rtl:make-machine-constant distance)))
+ (rtl:make-assignment locative
+ (rtl:bump-closure (rtl:make-fetch locative)
+ distance))
call-code)))))
(define (rtl:bump-closure closure distance)
- #|
- ;; We want this, but it doesn't type check.
- ;; It is turned into this by a rewrite rule.
- (rtl:make-byte-offset-address closure distance)
- |#
(rtl:make-typed-cons:procedure
- (rtl:make-byte-offset-address (rtl:make-object->address closure)
- distance)))
+ (rtl:make-address
+ (rtl:locative-byte-offset closure distance))))
\f
(define (invocation/apply model operator frame-size continuation prefix)
model operator ; ignored
#| -*-Scheme-*-
-$Id: rgrval.scm,v 4.21 1993/07/01 03:27:12 gjr Exp $
+$Id: rgrval.scm,v 4.22 1993/07/09 00:15:16 gjr Exp $
Copyright (c) 1988-1993 Massachusetts Institute of Technology
(closure-environment-adjustment nentries entry))))
(if (back-end:= distance 0)
expression
- (rtl:bump-closure expression
- (rtl:make-machine-constant distance))))))))
+ (rtl:bump-closure expression distance)))))))
\f
(define (make-non-trivial-closure-cons procedure block**)
(let* ((block (procedure-closing-block procedure))