#| -*-Scheme-*-
-$Id: opncod.scm,v 4.61 1993/10/26 19:34:45 gjr Exp $
+$Id: opncod.scm,v 4.62 1993/11/10 21:31:13 jmiller Exp $
Copyright (c) 1988-1993 Massachusetts Institute of Technology
(back-end:+ value header-length-in-units)))
(unknown-index)))
(unknown-index)))))
-
+\f
(define object-memory-reference
(indexed-memory-reference
(lambda (expression) expression false)
rtl:locative-byte-index
(back-end:* address-units-per-object 2)
scfg*scfg->scfg!)))
-\f
+
(define float-memory-reference
(indexed-memory-reference
(lambda (expression) (rtl:make-fetch (rtl:locative-offset expression 0)))
(finish (rtl:locative-float-offset data-base value))
(unknown-index)))
(unknown-index)))))))
-
-(define rtl:floating-vector-length-fetch
- (if (back-end:= address-units-per-float address-units-per-object)
- rtl:vector-length-fetch
- (let ((quantum
- (back-end:quotient
- (back-end:+ address-units-per-float
- (back-end:- address-units-per-object 1))
- address-units-per-object)))
- (if (and (number? quantum) (= quantum 2))
- (lambda (locative)
- (rtl:make-fixnum->object
- (rtl:make-fixnum-2-args
- 'FIXNUM-LSH
- (rtl:make-object->fixnum (rtl:make-fetch locative))
- (rtl:make-object->fixnum (rtl:make-constant -1))
- false)))
- (lambda (locative)
- (rtl:make-fixnum->object
- (rtl:make-fixnum-2-args
- 'FIXNUM-QUOTIENT
- (rtl:make-object->fixnum (rtl:make-fetch locative))
- (rtl:make-object->fixnum (rtl:make-constant quantum))
- false)))))))
\f
(define (rtl:length-fetch locative)
(rtl:make-cons-non-pointer (rtl:make-machine-constant (ucode-type fixnum))
(rtl:make-assignment locative
(rtl:make-object->float value)))
+(define rtl:floating-vector-length-fetch
+ (if (back-end:= address-units-per-float address-units-per-object)
+ rtl:vector-length-fetch
+ (let ((quantum
+ (back-end:quotient
+ (back-end:+ address-units-per-float
+ (back-end:- address-units-per-object 1))
+ address-units-per-object)))
+ (if (and (number? quantum) (= quantum 2))
+ (lambda (locative)
+ (rtl:make-fixnum->object
+ (rtl:make-fixnum-2-args
+ 'FIXNUM-LSH
+ (rtl:make-object->fixnum (rtl:make-fetch locative))
+ (rtl:make-object->fixnum (rtl:make-constant -1))
+ false)))
+ (lambda (locative)
+ (rtl:make-fixnum->object
+ (rtl:make-fixnum-2-args
+ 'FIXNUM-QUOTIENT
+ (rtl:make-object->fixnum (rtl:make-fetch locative))
+ (rtl:make-object->fixnum (rtl:make-constant quantum))
+ false)))))))
+
(define (assignment-finisher make-assignment make-fetch)
make-fetch ;ignore
(lambda (locative value finish)