diff options
author | Andy Wingo <wingo@pobox.com> | 2013-05-05 19:19:20 +0200 |
---|---|---|
committer | Andy Wingo <wingo@pobox.com> | 2013-05-17 22:24:03 +0200 |
commit | 17bf887174a43b35c28e157f1db281ade964f05e (patch) | |
tree | 6ba57b41e3988bb06d63f80050bcda660a841cd9 | |
parent | 67759d2f98d7ca1aedb8e73ab6958ae9687c2767 (diff) | |
download | guile-17bf887174a43b35c28e157f1db281ade964f05e.tar.gz |
`disassemble' REPL command works with RTL programs
* module/system/repl/command.scm (disassemble): Work with RTL programs.
-rw-r--r-- | module/system/repl/command.scm | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/module/system/repl/command.scm b/module/system/repl/command.scm index 1a6f72a66..215451ec7 100644 --- a/module/system/repl/command.scm +++ b/module/system/repl/command.scm @@ -484,14 +484,21 @@ Run the optimizer on a piece of code and print the result." (define (guile:disassemble x) ((@ (language assembly disassemble) disassemble) x)) +(define (disassemble-program x) + ((@ (system vm disassembler) disassemble-program) x)) + (define-meta-command (disassemble repl (form)) "disassemble EXP Disassemble a compiled procedure." (let ((obj (repl-eval repl (repl-parse repl form)))) - (if (or (program? obj) (objcode? obj)) - (guile:disassemble obj) - (format #t "Argument to ,disassemble not a procedure or objcode: ~a~%" - obj)))) + (cond + ((rtl-program? obj) + (disassemble-program obj)) + ((or (program? obj) (objcode? obj)) + (guile:disassemble obj)) + (else + (format #t "Argument to ,disassemble not a procedure or objcode: ~a~%" + obj))))) (define-meta-command (disassemble-file repl file) "disassemble-file FILE |