link-debug.scm 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. ; Copyright (c) 1993-2008 by Richard Kelsey and Jonathan Rees. See file COPYING.
  2. ; Stuff for debugging new images:
  3. (define (ev form package)
  4. (invoke-template (compile-form form package)
  5. (package-uid package)))
  6. ; If desired, this definition of invoke-template can be replaced by
  7. ; something that starts up a different virtual machine.
  8. (define (invoke-template template env . args)
  9. (apply (make-closure template env)
  10. args))
  11. ; Utility for tracking down uses of variables
  12. (define (who-uses name proc)
  13. (let recur ((tem (closure-template proc))
  14. (path '()))
  15. (let loop ((i 0))
  16. (if (< i (template-length tem))
  17. (let ((thing (template-ref tem i))
  18. (down (lambda (tem)
  19. (recur tem (cons (or (template-ref tem 1) i) path)))))
  20. (cond ((template? thing)
  21. (down thing))
  22. ((location? thing)
  23. (if (eq? (location-name thing) name)
  24. (begin (write path) (newline))))
  25. ((closure? thing)
  26. (down (closure-template thing))))
  27. (loop (+ i 1)))))))