From: Chris Hanson Date: Tue, 14 Mar 1989 19:35:30 +0000 (+0000) Subject: The `block/procedure' of a block is not always a procedure (it might X-Git-Tag: 20090517-FFI~12231 X-Git-Url: https://birchwood-abbey.net/git?a=commitdiff_plain;h=8752c9540cba1078a11746f35fc3c071e9a0fac2;p=mit-scheme.git The `block/procedure' of a block is not always a procedure (it might be an expression). Sometimes must check it to make sure. --- diff --git a/v7/src/compiler/rtlgen/rgretn.scm b/v7/src/compiler/rtlgen/rgretn.scm index 7e0974e1d..cd0c891bc 100644 --- a/v7/src/compiler/rtlgen/rgretn.scm +++ b/v7/src/compiler/rtlgen/rgretn.scm @@ -1,6 +1,6 @@ #| -*-Scheme-*- -$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/rtlgen/rgretn.scm,v 4.11 1988/12/13 13:45:23 cph Exp $ +$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/rtlgen/rgretn.scm,v 4.12 1989/03/14 19:35:30 cph Rel $ Copyright (c) 1988 Massachusetts Institute of Technology @@ -69,9 +69,11 @@ MIT in each case. |# (define (generate/return* context operator not-on-stack? operand) (let ((continuation (rvalue-known-value operator))) (if (and continuation - (not (procedure/simplified? - (block-procedure - (continuation/closing-block continuation))))) + (let ((procedure + (block-procedure + (continuation/closing-block continuation)))) + (not (and (procedure? procedure) + (procedure/simplified? procedure))))) ((method-table-lookup simple-methods (continuation/type continuation)) (if not-on-stack? (return-operator/pop-frames context operator 0)