Allow compiled-code environments to be used in evaluation and REP
authorChris Hanson <org/chris-hanson/cph>
Thu, 3 Aug 1989 23:03:58 +0000 (23:03 +0000)
committerChris Hanson <org/chris-hanson/cph>
Thu, 3 Aug 1989 23:03:58 +0000 (23:03 +0000)
loops.

v7/src/runtime/dbgcmd.scm
v7/src/runtime/debug.scm
v7/src/runtime/global.scm
v7/src/runtime/rep.scm
v7/src/runtime/where.scm
v8/src/runtime/global.scm

index 55ed351e885486a10051a8a756382f4d1917b885..eddca847998fc8d96fc05aa0b5cb73e02508d344 100644 (file)
@@ -1,8 +1,8 @@
 #| -*-Scheme-*-
 
-$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/runtime/dbgcmd.scm,v 14.4 1989/01/06 22:24:05 cph Rel $
+$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/runtime/dbgcmd.scm,v 14.5 1989/08/03 23:03:34 cph Exp $
 
-Copyright (c) 1988 Massachusetts Institute of Technology
+Copyright (c) 1988, 1989 Massachusetts Institute of Technology
 
 This material was developed by the Scheme project at the Massachusetts
 Institute of Technology, Department of Electrical Engineering and
@@ -115,25 +115,8 @@ MIT in each case. |#
      (read-eval-print environment (cmdl-message/standard message) prompt))))
 
 (define (debug/eval expression environment)
-  (if (interpreter-environment? environment)
-      (leaving-command-loop (lambda () (eval expression environment)))
-      (begin
-       (if (not (symbol? expression))
-           (error "Can only lookup symbols in compiled code environments"
-                  expression))
-       (let loop ((environment environment))
-         (if (environment-bound? environment expression)
-             (let ((value (environment-lookup environment expression)))
-               (if (unassigned-reference-trap? value)
-                   (error "Unassigned variable" expression))
-               value)
-             (begin
-               (if (not (environment-has-parent? environment))
-                   (error "Unbound variable" expression))
-               (let ((parent (environment-parent environment)))
-                 (if (interpreter-environment? parent)
-                     (lexical-reference parent expression)
-                     (loop parent)))))))))
+  (leaving-command-loop (lambda () (eval expression environment))))
+
 (define (debug/where environment)
   (leaving-command-loop
    (lambda ()
index 8385bad6c838fbcfb512c315f99b588b327d182f..69e1be9048a0355b864461b56fa0f3f63fe54b81 100644 (file)
@@ -1,6 +1,6 @@
 #| -*-Scheme-*-
 
-$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/runtime/debug.scm,v 14.13 1989/07/13 18:38:31 cph Exp $
+$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/runtime/debug.scm,v 14.14 1989/08/03 23:02:11 cph Exp $
 
 Copyright (c) 1988, 1989 Massachusetts Institute of Technology
 
@@ -518,13 +518,12 @@ MIT in each case. |#
         (show-current-frame-1 true))))
 
 (define (enter-read-eval-print-loop)
-  (debug/read-eval-print (get-evaluation-environment interpreter-environment?)
+  (debug/read-eval-print (get-evaluation-environment)
                         "You are now in the desired environment"
                         "Eval-in-env-->"))
 
 (define (eval-in-current-environment)
-  (debug/read-eval-print-1
-   (get-evaluation-environment interpreter-environment?)))
+  (debug/read-eval-print-1 (get-evaluation-environment)))
 
 (define (enter-where-command)
   (with-current-environment debug/where))
@@ -570,7 +569,7 @@ MIT in each case. |#
   (let ((next (stack-frame/next-subproblem current-subproblem)))
     (if next
        (let ((invalid-expression? (invalid-expression? current-expression))
-             (environment (get-evaluation-environment environment?))
+             (environment (get-evaluation-environment))
              (return
               (lambda (value)
                 ((stack-frame->continuation next) value))))
@@ -682,9 +681,10 @@ MIT in each case. |#
       (receiver (car environment-list))
       (print-undefined-environment)))
 
-(define (get-evaluation-environment predicate)
+(define (get-evaluation-environment)
   (if (and (pair? environment-list)
-          (predicate (car environment-list)))      (car environment-list)
+          (environment? (car environment-list)))
+      (car environment-list)
       (begin
        (newline)
        (write-string "Cannot evaluate in current environment")
index cc9e6a34c2abfb1735bc9a11a7c4412f2a29b9ae..f744c1b21f49fea043b6616616c1c50dc91f4c3a 100644 (file)
@@ -1,6 +1,6 @@
 #| -*-Scheme-*-
 
-$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/runtime/global.scm,v 14.9 1989/06/09 16:51:27 cph Rel $
+$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/runtime/global.scm,v 14.10 1989/08/03 23:03:58 cph Exp $
 
 Copyright (c) 1988, 1989 Massachusetts Institute of Technology
 
@@ -99,7 +99,9 @@ MIT in each case. |#
                   (loop (car rest-elements) (cdr rest-elements))))))))
 
 (define (eval expression environment)
-  (scode-eval (syntax expression system-global-syntax-table) environment))
+  (extended-scode-eval (syntax expression system-global-syntax-table)
+                      environment))
+
 (define-integrable (system-hunk3-cons type cxr0 cxr1 cxr2)
   (object-new-type type (hunk3-cons cxr0 cxr1 cxr2)))
 
index abd0b97d5869347373599a14a941cc2eb80fcd8c..4eb089455c6487475bf1d52e6b62ee9e9dddffe4 100644 (file)
@@ -1,6 +1,6 @@
 #| -*-Scheme-*-
 
-$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/runtime/rep.scm,v 14.9 1989/03/06 19:59:42 cph Rel $
+$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/runtime/rep.scm,v 14.10 1989/08/03 23:03:04 cph Exp $
 
 Copyright (c) 1988, 1989 Massachusetts Institute of Technology
 
@@ -272,7 +272,11 @@ MIT in each case. |#
                              syntax-table
                              (make-repl-history reader-history-size)
                              (make-repl-history printer-history-size))
-            message))
+            (cmdl-message/append
+             message
+             (cmdl-message/active
+              (lambda ()
+                (hook/repl-environment (nearest-repl) environment))))))
 
 (define (repl-driver repl)
   (fluid-let ((hook/error-handler default/error-handler))
@@ -383,12 +387,20 @@ MIT in each case. |#
 (define hook/repl-write)
 
 (define (default/repl-environment repl environment)
-  (let ((package (environment->package environment))
-       (port (cmdl/output-port repl)))
-    (if package
+  (let ((port (cmdl/output-port repl)))
+    (if (not (interpreter-environment? environment))
        (begin
-         (write-string "\n;Package: " port)
-         (write (package/name package) port))))
+         (write-string
+          "\n;Warning! this environment is a compiled-code environment:")
+         (write-string
+          "\n; Assignments to most compiled-code bindings are prohibited,")
+         (write-string
+          "\n; as are certain other environment operations.")))
+    (let ((package (environment->package environment)))
+      (if package
+         (begin
+           (write-string "\n;Package: " port)
+           (write (package/name package) port)))))
   unspecific)
 
 (define (default/repl-read repl)
@@ -399,7 +411,8 @@ MIT in each case. |#
 (define (default/repl-eval repl s-expression environment syntax-table)
   repl                                 ;ignore
   (let ((scode (syntax s-expression syntax-table)))
-    (with-new-history (lambda () (scode-eval scode environment)))))
+    (with-new-history (lambda () (extended-scode-eval scode environment)))))
+
 (define ((cmdl-message/value value) repl)
   (hook/repl-write repl value))
 
index 5ae0acb979cf78e1cbb3f698ca53d78c2d6e50a9..d05699d4864c3f2341e6ad2be983f3a49fd6f5ae 100644 (file)
@@ -1,8 +1,8 @@
 #| -*-Scheme-*-
 
-$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/runtime/where.scm,v 14.5 1988/12/30 06:44:04 cph Rel $
+$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/runtime/where.scm,v 14.6 1989/08/03 23:02:37 cph Exp $
 
-Copyright (c) 1988 Massachusetts Institute of Technology
+Copyright (c) 1988, 1989 Massachusetts Institute of Technology
 
 This material was developed by the Scheme project at the Massachusetts
 Institute of Technology, Department of Electrical Engineering and
@@ -114,25 +114,14 @@ MIT in each case. |#
   (print-user-friendly-name (car frame-list)))
 
 (define (recursive-where)
-  (if-interpreter-environment (car frame-list)
-    (lambda (environment)
-      (let ((inp (prompt-for-expression "Object to eval and examine-> ")))
-       (write-string "New where!")
-       (debug/where (debug/eval inp environment))))))
+  (let ((inp (prompt-for-expression "Object to eval and examine-> ")))
+    (write-string "New where!")
+    (debug/where (debug/eval inp (car frame-list)))))
 
 (define (enter)
-  (if-interpreter-environment (car frame-list)
-    (lambda (environment)
-      (debug/read-eval-print environment
-                            "You are now in the desired environment"
-                            "Eval-in-env-->"))))
+  (debug/read-eval-print (car frame-list)
+                        "You are now in the desired environment"
+                        "Eval-in-env-->"))
 
 (define (show-object)
-  (if-interpreter-environment (car frame-list) debug/read-eval-print-1))
-
-(define (if-interpreter-environment environment receiver)
-  (if (interpreter-environment? environment)
-      (receiver environment)
-      (begin
-       (newline)
-       (write-string "This frame is not an interpreter environment"))))
\ No newline at end of file
+  (debug/read-eval-print-1 (car frame-list)))
\ No newline at end of file
index 339f848a936d8e79ef6148331161317799d19e62..28ad02cd3e591726aada11becd8004cb8d98354a 100644 (file)
@@ -1,6 +1,6 @@
 #| -*-Scheme-*-
 
-$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v8/src/runtime/global.scm,v 14.9 1989/06/09 16:51:27 cph Rel $
+$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v8/src/runtime/global.scm,v 14.10 1989/08/03 23:03:58 cph Exp $
 
 Copyright (c) 1988, 1989 Massachusetts Institute of Technology
 
@@ -99,7 +99,9 @@ MIT in each case. |#
                   (loop (car rest-elements) (cdr rest-elements))))))))
 
 (define (eval expression environment)
-  (scode-eval (syntax expression system-global-syntax-table) environment))
+  (extended-scode-eval (syntax expression system-global-syntax-table)
+                      environment))
+
 (define-integrable (system-hunk3-cons type cxr0 cxr1 cxr2)
   (object-new-type type (hunk3-cons cxr0 cxr1 cxr2)))