diff options
author | Andy Wingo <wingo@pobox.com> | 2013-11-21 16:45:03 +0100 |
---|---|---|
committer | Andy Wingo <wingo@pobox.com> | 2013-11-21 16:45:03 +0100 |
commit | a222cbc9d147c0649b5b4621579de977a690b213 (patch) | |
tree | 05e3befc413d9a2f0320a3f68bca110d2e14c00d /module/system/vm/traps.scm | |
parent | 972275eee5326b4628f207996e14e0040fb94256 (diff) | |
download | guile-a222cbc9d147c0649b5b4621579de977a690b213.tar.gz |
No more VM objects visible to Scheme
* libguile/vm.h:
* libguile/vm.c (scm_the_vm): Don't expose to Scheme.
(scm_vm_p): Remove, as it is not needed.
* module/system/vm/vm.scm: Remove the-vm and vm? exports.
* doc/ref/api-coverage.texi (Code Coverage):
* test-suite/tests/coverage.test:
* module/system/vm/coverage.scm (with-code-coverage): Don't take a VM
argument. Adapt documentation and tests.
* module/ice-9/command-line.scm: Remove the-vm autoload.
* module/system/vm/trace.scm (trace-calls-to-procedure):
(trace-calls-in-procedure):
(trace-instructions-in-procedure):
(call-with-trace): Remove #:vm kwarg, and adapt to trap changes.
* module/system/vm/trap-state.scm (the-trap-state): Rework to use a
parameter underneath instead of a weak key on (the-vm).
* module/system/vm/traps.scm (new-disabled-trap):
(new-enabled-trap): Remove vm argument.
(trap-at-procedure-call):
(trap-in-procedure):
(trap-instructions-in-procedure):
(trap-at-procedure-ip-in-range):
(trap-at-source-location):
(trap-frame-finish):
(trap-in-dynamic-extent):
(trap-calls-in-dynamic-extent):
(trap-instructions-in-dynamic-extent):
(trap-calls-to-procedure):
(trap-matching-instructions): Remove vm keyword arguments.
* test-suite/tests/control.test ("unwind"): Adapt test.
* test-suite/tests/eval.test (test-suite): Remove the-vm import.
Diffstat (limited to 'module/system/vm/traps.scm')
-rw-r--r-- | module/system/vm/traps.scm | 67 |
1 files changed, 27 insertions, 40 deletions
diff --git a/module/system/vm/traps.scm b/module/system/vm/traps.scm index 1d42f1cc1..7fab208aa 100644 --- a/module/system/vm/traps.scm +++ b/module/system/vm/traps.scm @@ -83,7 +83,7 @@ (if (not (predicate? arg)) (error "bad argument ~a: expected ~a" 'arg 'predicate?))))) -(define (new-disabled-trap vm enable disable) +(define (new-disabled-trap enable disable) (let ((enabled? #f)) (define-syntax disabled? (identifier-syntax @@ -104,8 +104,8 @@ enable-trap)) -(define (new-enabled-trap vm frame enable disable) - ((new-disabled-trap vm enable disable) frame)) +(define (new-enabled-trap frame enable disable) + ((new-disabled-trap enable disable) frame)) ;; Returns an absolute IP. (define (program-last-ip prog) @@ -126,8 +126,7 @@ ;; A basic trap, fires when a procedure is called. ;; -(define* (trap-at-procedure-call proc handler #:key (vm (the-vm)) - (closure? #f) +(define* (trap-at-procedure-call proc handler #:key (closure? #f) (our-frame? (frame-matcher proc closure?))) (arg-check proc procedure?) (arg-check handler procedure?) @@ -137,7 +136,7 @@ (handler frame))) (new-enabled-trap - vm #f + #f (lambda (frame) (add-hook! (vm-apply-hook) apply-hook)) (lambda (frame) @@ -158,8 +157,7 @@ ;; * An abort. ;; (define* (trap-in-procedure proc enter-handler exit-handler - #:key current-frame (vm (the-vm)) - (closure? #f) + #:key current-frame (closure? #f) (our-frame? (frame-matcher proc closure?))) (arg-check proc procedure?) (arg-check enter-handler procedure?) @@ -208,7 +206,7 @@ (enter-proc frame))) (new-enabled-trap - vm current-frame + current-frame (lambda (frame) (add-hook! (vm-apply-hook) apply-hook) (add-hook! (vm-push-continuation-hook) push-cont-hook) @@ -229,8 +227,7 @@ ;; Building on trap-in-procedure, we have trap-instructions-in-procedure ;; (define* (trap-instructions-in-procedure proc next-handler exit-handler - #:key current-frame (vm (the-vm)) - (closure? #f) + #:key current-frame (closure? #f) (our-frame? (frame-matcher proc closure?))) (arg-check proc procedure?) @@ -250,7 +247,7 @@ (remove-hook! (vm-next-hook) next-hook)) (trap-in-procedure proc enter exit - #:current-frame current-frame #:vm vm + #:current-frame current-frame #:our-frame? our-frame?))) (define (non-negative-integer? x) @@ -277,8 +274,7 @@ ;; trap-at-procedure-ip-in-range. ;; (define* (trap-at-procedure-ip-in-range proc range handler - #:key current-frame (vm (the-vm)) - (closure? #f) + #:key current-frame (closure? #f) (our-frame? (frame-matcher proc closure?))) (arg-check proc procedure?) @@ -311,7 +307,7 @@ (set! fp-stack (cdr fp-stack)))) (trap-instructions-in-procedure proc next-handler exit-handler - #:current-frame current-frame #:vm vm + #:current-frame current-frame #:our-frame? our-frame?))) (define (program-sources-by-line proc file) @@ -375,8 +371,7 @@ ;; trap-at-source-location. The parameter `user-line' is one-indexed, as ;; a user counts lines, instead of zero-indexed, as Guile counts lines. ;; -(define* (trap-at-source-location file user-line handler - #:key current-frame (vm (the-vm))) +(define* (trap-at-source-location file user-line handler #:key current-frame) (arg-check file string?) (arg-check user-line positive-integer?) (arg-check handler procedure?) @@ -385,7 +380,7 @@ (lambda () (source-closures-or-procedures file (1- user-line))) (lambda (procs closures?) (new-enabled-trap - vm current-frame + current-frame (lambda (frame) (set! traps (map @@ -393,7 +388,6 @@ (let ((range (source->ip-range proc file (1- user-line)))) (trap-at-procedure-ip-in-range proc range handler #:current-frame current-frame - #:vm vm #:closure? closures?))) procs)) (if (null? traps) @@ -408,8 +402,7 @@ ;; do useful things during the dynamic extent of a procedure's ;; application. First, a trap for when a frame returns. ;; -(define* (trap-frame-finish frame return-handler abort-handler - #:key (vm (the-vm))) +(define (trap-frame-finish frame return-handler abort-handler) (arg-check frame frame?) (arg-check return-handler procedure?) (arg-check abort-handler procedure?) @@ -427,7 +420,7 @@ (apply abort-handler frame values)))) (new-enabled-trap - vm frame + frame (lambda (frame) (if (not fp) (error "return-or-abort traps may only be enabled once")) @@ -444,8 +437,7 @@ ;; based on the above trap-frame-finish? ;; (define* (trap-in-dynamic-extent proc enter-handler return-handler abort-handler - #:key current-frame (vm (the-vm)) - (closure? #f) + #:key current-frame (closure? #f) (our-frame? (frame-matcher proc closure?))) (arg-check proc procedure?) (arg-check enter-handler procedure?) @@ -467,11 +459,10 @@ (begin (enter-handler frame) (set! exit-trap - (trap-frame-finish frame return-hook abort-hook - #:vm vm))))) + (trap-frame-finish frame return-hook abort-hook))))) (new-enabled-trap - vm current-frame + current-frame (lambda (frame) (add-hook! (vm-apply-hook) apply-hook)) (lambda (frame) @@ -484,8 +475,7 @@ ;; depth of the call stack relative to the original procedure. ;; (define* (trap-calls-in-dynamic-extent proc apply-handler return-handler - #:key current-frame (vm (the-vm)) - (closure? #f) + #:key current-frame (closure? #f) (our-frame? (frame-matcher proc closure?))) (arg-check proc procedure?) @@ -521,14 +511,13 @@ (leave frame)) (trap-in-dynamic-extent proc enter return abort - #:current-frame current-frame #:vm vm + #:current-frame current-frame #:our-frame? our-frame?))) ;; Trapping all retired intructions within a dynamic extent. ;; (define* (trap-instructions-in-dynamic-extent proc next-handler - #:key current-frame (vm (the-vm)) - (closure? #f) + #:key current-frame (closure? #f) (our-frame? (frame-matcher proc closure?))) (arg-check proc procedure?) @@ -550,13 +539,12 @@ (leave frame)) (trap-in-dynamic-extent proc enter return abort - #:current-frame current-frame #:vm vm + #:current-frame current-frame #:our-frame? our-frame?))) ;; Traps calls and returns for a given procedure, keeping track of the call depth. ;; -(define* (trap-calls-to-procedure proc apply-handler return-handler - #:key (vm (the-vm))) +(define (trap-calls-to-procedure proc apply-handler return-handler) (arg-check proc procedure?) (arg-check apply-handler procedure?) (arg-check return-handler procedure?) @@ -584,7 +572,7 @@ (frame-finished frame)) (set! finish-trap - (trap-frame-finish frame return-hook abort-hook #:vm vm)) + (trap-frame-finish frame return-hook abort-hook)) (set! pending-finish-traps (cons finish-trap pending-finish-traps)))))) @@ -613,12 +601,11 @@ (with-pending-finish-enablers (trap frame)))) (with-pending-finish-disablers - (trap-at-procedure-call proc apply-hook #:vm vm)))) + (trap-at-procedure-call proc apply-hook)))) ;; Trap when the source location changes. ;; -(define* (trap-matching-instructions frame-pred handler - #:key (vm (the-vm))) +(define (trap-matching-instructions frame-pred handler) (arg-check frame-pred procedure?) (arg-check handler procedure?) (let () @@ -627,7 +614,7 @@ (handler frame))) (new-enabled-trap - vm #f + #f (lambda (frame) (add-hook! (vm-next-hook) next-hook)) (lambda (frame) |