summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndy Wingo <wingo@pobox.com>2013-05-05 19:19:20 +0200
committerAndy Wingo <wingo@pobox.com>2013-05-17 22:24:03 +0200
commit17bf887174a43b35c28e157f1db281ade964f05e (patch)
tree6ba57b41e3988bb06d63f80050bcda660a841cd9
parent67759d2f98d7ca1aedb8e73ab6958ae9687c2767 (diff)
downloadguile-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.scm15
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