;;; -*-Scheme-*-
;;;
-;;; $Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/runtime/boot.scm,v 13.45 1988/04/12 14:59:27 jinx Rel $
+;;; $Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/runtime/boot.scm,v 13.46 1988/05/03 19:04:10 jinx Exp $
;;;
;;; Copyright (c) 1988 Massachusetts Institute of Technology
;;;
(define (copy-program exp)
(if (not (primitive-type? (ucode-type COMPILED-ENTRY) exp))
(error "copy-program: Can only copy compiled programs" exp))
- (let ((v (vector-copy
- (primitive-set-type
- (ucode-type VECTOR)
- (compiled-code-address->block exp)))))
- (with-interrupt-mask
- interrupt-mask-none
- (lambda (old)
- old ;; ignored
- (primitive-object-set-type
- (ucode-type COMPILED-ENTRY)
- (+ (compiled-code-address->offset exp) (primitive-datum v)))))))
+ (let* ((original (compiled-code-address->block exp))
+ (block (primitive-set-type
+ (ucode-type COMPILED-CODE-BLOCK)
+ (vector-copy
+ (primitive-set-type (ucode-type VECTOR)
+ original))))
+ (end (system-vector-size block)))
+
+ (define (map-entry entry)
+ (with-interrupt-mask
+ interrupt-mask-none
+ (lambda (old)
+ old ;; ignored
+ (primitive-object-set-type
+ (primitive-type entry)
+ (+ (compiled-code-address->offset entry)
+ (primitive-datum block))))))
+
+ (let loop ((n (1+ (primitive-datum (system-vector-ref block 0)))))
+ (cond ((>= n end)
+ (map-entry exp))
+ ((not (lambda? (system-vector-ref block n)))
+ (loop (1+ n)))
+ (else
+ (lambda-components (system-vector-ref block n)
+ (lambda (name req opt rest aux decl body)
+ (if (and (primitive-type? (ucode-type COMPILED-ENTRY) body)
+ (eq? original (compiled-code-address->block body)))
+ (system-vector-set! block n
+ (make-lambda name req opt rest aux decl
+ (map-entry body))))
+ (loop (1+ n)))))))))
) ;; End of let-syntax
\ No newline at end of file
;;; -*-Scheme-*-
;;;
-;;; $Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/runtime/error.scm,v 13.50 1988/02/10 17:24:43 jinx Rel $
+;;; $Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/runtime/error.scm,v 13.51 1988/05/03 19:04:42 jinx Exp $
;;;
;;; Copyright (c) 1987 Massachusetts Institute of Technology
;;;
(make-primitive-procedure 'LEXICAL-ASSIGNMENT 3))
combination-second-operand)
+(define-unbound-variable-error
+ (list (make-primitive-procedure 'ENVIRONMENT-LINK-NAME 3))
+ combination-third-operand)
+
(define-unbound-variable-error
(list (make-primitive-procedure 'ADD-FLUID-BINDING! 3))
(lambda (obj)
"Too many open files"
combination-first-operand)
+(define-operation-specific-error 'BAD-ASSIGNMENT
+ (list (make-primitive-procedure 'ENVIRONMENT-LINK-NAME 3))
+ "Bound variable"
+ combination-third-operand)
+
;;; SCODE Syntax Errors
;;; This error gets an unevaluated combination, but it doesn't ever
(define-default-error 'EXECUTE-MANIFEST-VECTOR
"Attempt to execute Manifest Vector -- get a wizard"
identity-procedure)
-
-(define-total-error-handler 'WRITE-INTO-PURE-SPACE
- (lambda (error-code expression)
- (newline)
- (write-string "Automagically IMPURIFYing an object....")
- (impurify (combination-first-operand expression))))
(define-default-error 'UNDEFINED-USER-TYPE
"Undefined Type Code -- get a wizard"
"Compiled code error -- get a wizard"
identity-procedure)
+(define-default-error 'ILLEGAL-REFERENCE-TRAP
+ "Illegal reference trap -- get a wizard"
+ identity-procedure)
+
+(define-default-error 'BROKEN-VARIABLE-CACHE
+ "Broken variable value cell"
+ identity-procedure)
+\f
+;;;; Harmless system errors
+
(define-default-error 'FLOATING-OVERFLOW
"Floating point overflow"
identity-procedure)
+(define-total-error-handler 'WRITE-INTO-PURE-SPACE
+ (lambda (error-code expression)
+ (newline)
+ (write-string "Automagically IMPURIFYing an object....")
+ (impurify (combination-first-operand expression))))
+
;;; end ERROR-SYSTEM package.
))
\ No newline at end of file