summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndy Wingo <wingo@pobox.com>2010-03-12 12:10:23 +0100
committerAndy Wingo <wingo@pobox.com>2010-03-12 12:10:23 +0100
commit01c0082fae4ce3b0c09f003a2141c38cfc062d74 (patch)
tree33c6068d7a12aa0ddfaed749ce64ba23bd6493ff
parent32ce4058db1adc319dabf6f93143cb367f7456fc (diff)
downloadguile-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.scm27
-rw-r--r--module/system/repl/common.scm23
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*))