#| -*-Scheme-*-
-$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/base/ctypes.scm,v 4.8 1988/12/13 13:02:21 cph Exp $
+$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/base/ctypes.scm,v 4.9 1988/12/20 23:13:08 cph Exp $
Copyright (c) 1988 Massachusetts Institute of Technology
(let ((continuation (combination/continuation combination)))
(set-application-type! combination 'RETURN)
(set-application-operator! combination continuation)
- (set-application-operands! combination (list rvalue))))
+ (set-application-operands! combination (list rvalue)))
+ (let ((push (combination/continuation-push combination)))
+ (if (and push (rvalue-known-value (combination/continuation combination)))
+ (set-virtual-continuation/type! (virtual-return-operator push)
+ continuation-type/effect))))
(define-integrable (make-return block continuation rvalue)
(make-application 'RETURN block continuation (list rvalue) false))
(define-integrable return/context application-context)
(define-integrable return/operator application-operator)
-
+(define-integrable return/continuation-push application-continuation-push)
(define-integrable (return/operand return)
(car (application-operands return)))
\f
#| -*-Scheme-*-
-$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/fgopt/sideff.scm,v 1.3 1988/12/13 18:21:52 cph Exp $
+$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/fgopt/sideff.scm,v 1.4 1988/12/20 23:13:20 cph Exp $
Copyright (c) 1988 Massachusetts Institute of Technology
(define (analyze-combination! app)
(define (simplify-combination! value)
- (combination/trivial! app value)
+ (combination/constant! app
+ (r/lvalue->rvalue (combination/context app) value))
(enqueue-node! (block-procedure (application-block app))))
(define (check value op-vals)
(make-reference context r/lvalue false)
r/lvalue))
\f
-(define (combination/trivial! comb r/lvalue)
- (let ((push (combination/continuation-push comb)))
- (if (and push (rvalue-known-value (combination/continuation comb)))
- (set-virtual-continuation/type!
- (virtual-return-operator push)
- continuation-type/effect)))
- (combination/constant!
- comb
- (r/lvalue->rvalue (combination/context comb) r/lvalue)))
-
(define (procedure/trivial! procedure kind)
(let ((place (assq 'TRIVIAL (procedure-properties procedure))))
(cond ((not place)