#| -*-Scheme-*-
-$Id: rtlgen.scm,v 1.40 1995/09/05 19:04:13 adams Exp $
+$Id: rtlgen.scm,v 1.41 1995/09/08 16:49:08 adams Exp $
Copyright (c) 1994-1995 Massachusetts Institute of Technology
(define *rtlgen/fold-tag-predicates?* true)
(define *rtlgen/fold-simple-value-tests?* #T)
+(define *rtlgen/quick&dirty-interrupt-check-map*)
+
;; Does not currently work if #F:
(define *rtlgen/pre-load-stack-frame?* #T)
(fluid-let ((*rtlgen/object-queue* (queue/make))
(*rtlgen/delayed-objects* '())
(*rtlgen/procedures* '())
- (*rtlgen/continuations* '()))
+ (*rtlgen/continuations* '())
+ (*rtlgen/quick&dirty-interrupt-check-map* (make-form-map)))
(call-with-values
(lambda ()
(if *procedure-result?*
(rtlgen/debugging-info dbg-form))
(MACHINE-CONSTANT ,frame-size)
(MACHINE-CONSTANT 1))
- (rtlgen/wrap-with-interrupt-check/continuation
- body
- `(INTERRUPT-CHECK:CONTINUATION ,label (MACHINE-CONSTANT 2))))))
+ ;; Kludge
+ (if (rtlgen/quick&dirty/forbid-interrupt-check? dbg-form)
+ body
+ (rtlgen/wrap-with-interrupt-check/continuation
+ body
+ `(INTERRUPT-CHECK:CONTINUATION ,label (MACHINE-CONSTANT 2)))))))
(define (rtlgen/wrap-closure label dbg-form body lambda-list saved-size)
saved-size ; only continuations have this
\f
(define (rtlgen/expr/make-return-address state rand)
state ; ignored
+ (rtlgen/quick&dirty/forbid-interrupt-check! rand)
(rtlgen/continuation-label->object
(rtlgen/enqueue-object! rand 'CONTINUATION)))
,@rtlgen/?closure-elts*)))
\f
-(define *rtlgen/omit-internal-interrupt-checks?* #F)
+;; Kludges
+
+(define *rtlgen/omit-internal-interrupt-checks?* #T)
(define (rtlgen/omit-interrupt-check? procedure-name)
(and *rtlgen/omit-internal-interrupt-checks?*
(like? 'cons-)
(like? 'next-)
(like? 'receiver-)))
+
+(define (rtlgen/quick&dirty/forbid-interrupt-check! form)
+ (form-map/put! *rtlgen/quick&dirty-interrupt-check-map* form #T))
+
+(define (rtlgen/quick&dirty/forbid-interrupt-check? form)
+ (form-map/get *rtlgen/quick&dirty-interrupt-check-map* form #F))
+
+
\f
(define (rtlgen/check-declarations declarations)
(define (check-declaration declaration)