diff options
Diffstat (limited to 'module/system/vm/disasm.scm')
-rw-r--r-- | module/system/vm/disasm.scm | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/module/system/vm/disasm.scm b/module/system/vm/disasm.scm index 0ab0a83d7..2e3c1ac87 100644 --- a/module/system/vm/disasm.scm +++ b/module/system/vm/disasm.scm @@ -27,15 +27,17 @@ :use-module (ice-9 format) :use-module (ice-9 receive) :use-module (ice-9 and-let-star) - :export (disassemble-dumpcode disassemble-program)) + :export (disassemble-objcode disassemble-program)) -(define (disassemble-dumpcode dumpcode . opts) - (if (not (dumpcode? dumpcode)) (error "Invalid dumpcode")) - (format #t "Disassembly of dumpcode:\n\n") - (format #t "Compiled for Guile VM ~A\n\n" (dumpcode-version dumpcode)) - (format #t "nlocs = ~A nexts = ~A\n\n" - (dumpcode-nlocs dumpcode) (dumpcode-nexts dumpcode)) - (disassemble-bytecode (dumpcode-bytecode dumpcode) #f)) +(define (disassemble-objcode objcode . opts) + (let* ((prog (objcode->program objcode)) + (arity (program-arity prog)) + (nlocs (caddr arity)) + (nexts (cadddr arity)) + (bytes (program-bytecode prog))) + (format #t "Disassembly of ~A:\n\n" objcode) + (format #t "nlocs = ~A nexts = ~A\n\n" nlocs nexts) + (disassemble-bytecode bytes #f))) (define (disassemble-program prog . opts) (let* ((arity (program-arity prog)) |