home *** CD-ROM | disk | FTP | other *** search
- 6/8/90 parassign.t
-
- (define (do-indirects node do-later)
- (iterate loop ((items do-later))
- (if items
- (let ((item (car items))
- (contour (lambda-self-var *heap-env*)))
- (receive (mover target) (get-mover-and-target item)
- (cond ((eq? (register-loc contour) target)
- (if (cdr items)
- (loop (append (cdr items) (cons item '())))
- (mover node (car item) target)))
- ((eq? (temp-loc contour) target)
- (cond ((not (cdr items))
- (mover node (car item) target))
- ((receive (#f target) (get-mover-and-target (cadr items))
- (eq? (register-loc contour) target))
- (set (temp-loc contour) nil)
- (set (temp-node target) nil)
- (mover node (car item) target)
- (loop (cdr items)))
- (else
- (loop (append (cdr items) (cons item '()))))))
- (else
- (mover node (car item) target)
- (loop (cdr items)))))))))
-
- 6/11/90 closure.t
-
- (set (variable-number *dummy-var*) 0)
-