summaryrefslogtreecommitdiff
path: root/module/system/vm/disassembler.scm
diff options
context:
space:
mode:
authorAndy Wingo <wingo@igalia.com>2013-10-14 16:13:57 +0200
committerAndy Wingo <wingo@igalia.com>2013-10-14 16:13:57 +0200
commit8d59d55e866666a4ed3b9695638265be62b20af0 (patch)
tree3e1cbb7f192f89096cc9ca0414c946bf65baef95 /module/system/vm/disassembler.scm
parent82f4bac420db15b3d41313f1f0213ea34a443d60 (diff)
downloadguile-8d59d55e866666a4ed3b9695638265be62b20af0.tar.gz
RTL: Compile prompts
* libguile/vm-engine.c (prompt): Adapt to explicitly set the saved SP so we know how many incoming values the handler will receive, and to make escape-only? a flag. * module/language/cps/compile-rtl.scm (emit-rtl-sequence): $prompt should only be found in a "seq" context, as it just pushes on a prompt and doesn't bind any values. On the other hand it should emit appropriate code for the handler to bind its values, so do that. * module/language/cps/slot-allocation.scm ($cont-allocation): Add a note that proc-slot is used by prompts as well. (allocate-slots): Compute the allocation of a prompt handler's args. * module/language/tree-il/compile-cps.scm (convert): Use "unwind" instead of the nonexistent "pop-prompt". * module/system/vm/disassembler.scm (code-annotation): Adapt to change in prompt VM op.
Diffstat (limited to 'module/system/vm/disassembler.scm')
-rw-r--r--module/system/vm/disassembler.scm2
1 files changed, 1 insertions, 1 deletions
diff --git a/module/system/vm/disassembler.scm b/module/system/vm/disassembler.scm
index 4917743db..09ca337bf 100644
--- a/module/system/vm/disassembler.scm
+++ b/module/system/vm/disassembler.scm
@@ -217,7 +217,7 @@ address of that offset."
'br-if-char 'br-if-tc7 'br-if-eq 'br-if-eqv 'br-if-equal
'br-if-= 'br-if-< 'br-if-<= 'br-if-> 'br-if->=) _ ... target)
(list "-> ~A" (vector-ref labels (- (+ offset target) start))))
- (('prompt tag flags handler)
+ (('prompt tag escape-only? proc-slot handler)
;; The H is for handler.
(list "H -> ~A" (vector-ref labels (- (+ offset handler) start))))
(((or 'make-short-immediate 'make-long-immediate) _ imm)