\f
;; Note: The C back end cannot dump objects, and instead generates
;; code to construct the objects.
-;; Thus the unmapping of reference traps must be done late,
+;; Thus the unmapping of reference traps must be done late
;; when generating such code, and not early, since the code
;; that destructures object will otherwise run into actual
;; reference traps.
(make-subproblem/canonical (make-return block continuation rvalue)
continuation)))
\f
-(define-integrable (make-variable-generator extract-name safe?)
- (lambda (block continuation context expression)
- context ; ignored
- (continue/rvalue block
- continuation
- (make-reference block
- (find-name block
- (extract-name expression))
- safe?))))
-
-(define generate/variable
- (make-variable-generator scode/variable-name #f))
-
-(define generate/safe-variable
- (make-variable-generator scode/safe-variable-name #t))
-
-(define generate/global-variable
- (make-variable-generator scode/global-variable-name #f))
-
(define-integrable (scode/make-safe-variable name)
(cons safe-variable-tag name))
block
(cons variable
(block-variables-nontransitively-free block))))))
+
+(define-integrable (make-variable-generator extract-name safe?)
+ (lambda (block continuation context expression)
+ context ; ignored
+ (continue/rvalue block
+ continuation
+ (make-reference block
+ (find-name block
+ (extract-name expression))
+ safe?))))
+
+(define generate/variable
+ (make-variable-generator scode/variable-name #f))
+
+(define generate/safe-variable
+ (make-variable-generator scode/safe-variable-name #t))
+
+(define generate/global-variable
+ (make-variable-generator scode/global-variable-name #f))
+
\f
(define (generate/lambda block continuation context expression)
(generate/lambda* block continuation