diff options
author | Andy Wingo <wingo@pobox.com> | 2010-03-12 12:10:23 +0100 |
---|---|---|
committer | Andy Wingo <wingo@pobox.com> | 2010-03-12 12:10:23 +0100 |
commit | 01c0082fae4ce3b0c09f003a2141c38cfc062d74 (patch) | |
tree | 33c6068d7a12aa0ddfaed749ce64ba23bd6493ff | |
parent | 32ce4058db1adc319dabf6f93143cb367f7456fc (diff) | |
download | guile-01c0082fae4ce3b0c09f003a2141c38cfc062d74.tar.gz |
remove repl-vm; repl evaluation does not cause recursive vm invocation
* module/system/repl/common.scm (<repl>): Remove "vm" field and repl-vm
accessor. I think the correct model is to just use the-vm. This change
was prompted by the need to have the REPL itself not cause a recursive
VM invocation, so that captured prompts at the REPL are rewindable.
(make-repl): Remove treatment of #:vm.
(repl-eval): Load a compiled expression as a simple thunk, avoiding a
recursive VM call.
* module/system/repl/command.scm (profile, trace): Remove repl-vm
treatment.
(backtrace, debugger, step): Remove, as they were not implemented.
-rw-r--r-- | module/system/repl/command.scm | 27 | ||||
-rw-r--r-- | module/system/repl/common.scm | 23 |
2 files changed, 17 insertions, 33 deletions
diff --git a/module/system/repl/command.scm b/module/system/repl/command.scm index ae8568a85..67feeb162 100644 --- a/module/system/repl/command.scm +++ b/module/system/repl/command.scm @@ -28,7 +28,6 @@ #:use-module (system vm program) #:use-module (system vm vm) #:autoload (system base language) (lookup-language language-reader) - #:autoload (system vm debug) (vm-debugger vm-backtrace) #:autoload (system vm trace) (vm-trace) #:autoload (system vm profile) (vm-profile) #:use-module (ice-9 format) @@ -51,7 +50,7 @@ (compile (compile c) (compile-file cc) (disassemble x) (disassemble-file xx)) (profile (time t) (profile pr)) - (debug (backtrace bt) (debugger db) (trace tr) (step st)) + (debug (trace tr)) (system (gc) (statistics stat)))) (define (group-name g) (car g)) @@ -358,9 +357,9 @@ Time execution." "profile FORM Profile execution." ;; FIXME opts - (let ((vm (repl-vm repl)) - (proc (make-program (repl-compile repl (repl-parse repl form))))) - (apply statprof (lambda () (vm-apply vm proc '())) opts))) + (apply statprof + (make-program (repl-compile repl (repl-parse repl form))) + opts)) @@ -368,29 +367,15 @@ Profile execution." ;;; Debug commands ;;; -(define-meta-command (backtrace repl) - "backtrace -Display backtrace." - (vm-backtrace (repl-vm repl))) - -(define-meta-command (debugger repl) - "debugger -Start debugger." - (vm-debugger (repl-vm repl))) - -(define-meta-command (trace repl form . opts) +(define-meta-command (trace repl (form) . opts) "trace FORM Trace execution." ;; FIXME: doc options, or somehow deal with them better (apply vm-trace - (repl-vm repl) + (the-vm) (make-program (repl-compile repl (repl-parse repl form))) opts)) -(define-meta-command (step repl) - "step FORM -Step execution." - (display "Not implemented yet\n")) ;;; diff --git a/module/system/repl/common.scm b/module/system/repl/common.scm index e3dc0c461..c760c891e 100644 --- a/module/system/repl/common.scm +++ b/module/system/repl/common.scm @@ -22,9 +22,9 @@ #:use-module (system base syntax) #:use-module (system base compile) #:use-module (system base language) - #:use-module (system vm vm) + #:use-module (system vm program) #:use-module (ice-9 control) - #:export (<repl> make-repl repl-vm repl-language repl-options + #:export (<repl> make-repl repl-language repl-options repl-tm-stats repl-gc-stats repl-welcome repl-prompt repl-read repl-compile repl-eval repl-parse repl-print repl-option-ref repl-option-set! @@ -35,7 +35,7 @@ ;;; Repl type ;;; -(define-record/keywords <repl> vm language options tm-stats gc-stats) +(define-record/keywords <repl> language options tm-stats gc-stats) (define repl-default-options '((trace . #f) @@ -43,8 +43,7 @@ (define %make-repl make-repl) (define (make-repl lang) - (%make-repl #:vm (the-vm) - #:language (lookup-language lang) + (%make-repl #:language (lookup-language lang) #:options repl-default-options #:tm-stats (times) #:gc-stats (gc-stats))) @@ -77,13 +76,13 @@ (if parser (parser form) form))) (define (repl-eval repl form) - (let ((eval (language-evaluator (repl-language repl)))) - (if (and eval - (or (null? (language-compilers (repl-language repl))) - (assq-ref (repl-options repl) 'interp))) - (% (eval form (current-module))) - (let ((compiled (repl-compile repl form '()))) - (% (vm-load (repl-vm repl) compiled)))))) + (let* ((eval (language-evaluator (repl-language repl))) + (thunk (if (and eval + (or (null? (language-compilers (repl-language repl))) + (assq-ref (repl-options repl) 'interp))) + (lambda () (eval form (current-module))) + (make-program (repl-compile repl form '()))))) + (% (thunk)))) (define (repl-print repl val) (if (not (eq? val *unspecified*)) |