#| -*-Scheme-*-
-$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/machines/bobcat/lapgen.scm,v 1.170 1987/05/29 21:21:02 cph Exp $
+$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/machines/bobcat/lapgen.scm,v 1.171 1987/05/31 23:00:30 cph Exp $
Copyright (c) 1987 Massachusetts Institute of Technology
unassigned? unbound? set! define primitive-apply enclose setup-lexpr
return-to-interpreter safe-lookup cache-variable reference-trap
assignment-trap)
- (define-entries #x0228 uuo-link uuo-link-trap))
+ (define-entries #x0228 uuo-link uuo-link-trap cache-reference-apply
+ safe-reference-trap unassigned?-trap))
(define reg:temp '(@AO 6 #x0010))
(define reg:enclose-result '(@AO 6 #x0014))
#| -*-Scheme-*-
-$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/machines/bobcat/machin.scm,v 1.47 1987/05/31 14:14:21 cph Exp $
+$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/machines/bobcat/machin.scm,v 1.48 1987/05/31 23:00:05 cph Exp $
Copyright (c) 1987 Massachusetts Institute of Technology
((INTERPRETER-CALL-RESULT:ACCESS) (interpreter-register:access))
((INTERPRETER-CALL-RESULT:CACHE-REFERENCE)
(interpreter-register:cache-reference))
+ ((INTERPRETER-CALL-RESULT:CACHE-UNASSIGNED?)
+ (interpreter-register:cache-unassigned?))
((INTERPRETER-CALL-RESULT:LOOKUP) (interpreter-register:lookup))
((INTERPRETER-CALL-RESULT:UNASSIGNED?) (interpreter-register:unassigned?))
((INTERPRETER-CALL-RESULT:UNBOUND?) (interpreter-register:unbound?))
(define (pseudo-register=? x y)
(= (register-renumber x) (register-renumber y)))
-
+\f
(define register-type
(let ((types (make-vector 16)))
(let loop ((i 0) (j 8))
(vector-set! references j `(A ,i))
(loop (1+ i) (1+ j))))) (lambda (register)
(vector-ref references register))))
-\f
-(define mask-reference '(D 7))
+(define mask-reference '(D 7))
+\f
(define-integrable (interpreter-register:access)
(rtl:make-machine-register d0))
(define-integrable (interpreter-register:cache-reference)
(rtl:make-machine-register d0))
+(define-integrable (interpreter-register:cache-unassigned?)
+ (rtl:make-machine-register d0))
+
(define-integrable (interpreter-register:enclose)
(rtl:make-offset (interpreter-regs-pointer) 5))
(define-integrable (interpreter-stack-pointer? register)
(= (rtl:register-number register) regnum:stack-pointer))
-
+\f
(define (lap:make-label-statement label)
`(LABEL ,label))
#| -*-Scheme-*-
-$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/rtlbase/rtlcon.scm,v 1.6 1987/05/29 17:49:58 cph Exp $
+$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/rtlbase/rtlcon.scm,v 1.7 1987/05/31 22:56:27 cph Exp $
Copyright (c) 1987 Massachusetts Institute of Technology
(and continuation
(continuation-label continuation))))
+(define (rtl:make-invocation:cache-reference frame-size prefix continuation
+ name)
+ (%make-invocation:cache-reference frame-size
+ prefix
+ (and continuation
+ (continuation-label continuation))
+ name))
+
(define (rtl:make-invocation:jump frame-size prefix continuation procedure)
(%make-invocation:jump frame-size
prefix
#| -*-Scheme-*-
-$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/rtlopt/rcse1.scm,v 1.105 1987/05/28 17:59:24 cph Exp $
+$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/rtlopt/rcse1.scm,v 1.106 1987/05/31 22:56:55 cph Exp $
Copyright (c) 1987 Massachusetts Institute of Technology
(define-cse-method 'CONTINUATION-HEAP-CHECK method/noop)
(define-cse-method 'INVOCATION:APPLY method/noop)
(define-cse-method 'INVOCATION:JUMP method/noop)
+(define-cse-method 'INVOCATION:CACHE-REFERENCE method/noop)
(define-cse-method 'INVOCATION:LEXPR method/noop)
(define-cse-method 'INVOCATION:PRIMITIVE method/noop)
+(define-cse-method 'INTERPRETER-CALL:CACHE-REFERENCE method/noop)
+(define-cse-method 'INTERPRETER-CALL:CACHE-UNASSIGNED? method/noop)
(define (method/invalidate-stack statement)
(stack-pointer-invalidate!))
rtl:set-invocation:lookup-environment!
statement
trivial-action)))
+
+(define-cse-method 'INTERPRETER-CALL:CACHE-ASSIGNMENT
+ (lambda (statement)
+ (expression-replace! rtl:interpreter-call:cache-assignment-value
+ rtl:set-interpreter-call:cache-assignment-value!
+ statement
+ (lambda (volatile? insert-source!)
+ (hash-table-delete-class! element-address-varies?)
+ (non-object-invalidate!)
+ (if (not volatile?) (insert-source!))))))
\f
(define (define-lookup-method type get-environment set-environment! register)
(define-cse-method type