diff options
author | Andy Wingo <wingo@pobox.com> | 2010-02-19 15:30:34 +0100 |
---|---|---|
committer | Andy Wingo <wingo@pobox.com> | 2010-02-19 15:30:34 +0100 |
commit | ea6b18e82f3ac2122d07c80bc0f320ea839a25b6 (patch) | |
tree | cd5e3c02694e73a2453b1cc9d06f160580c5c92f /libguile/vm-i-system.c | |
parent | f5b1f76af492f3c398527ee040e8bf09fc438a9a (diff) | |
download | guile-ea6b18e82f3ac2122d07c80bc0f320ea839a25b6.tar.gz |
prompt handlers are always inline
* libguile/control.h (SCM_F_PROMPT_INLINE, SCM_PROMPT_INLINE_P): Remove;
prompts always have "inline" handlers now.
* libguile/control.c (scm_c_make_prompt): Remove inline_handler_p arg.
* libguile/vm-i-system.c (prompt):
* module/language/assembly/decompile-bytecode.scm (decode-load-program):
* module/language/assembly/compile-bytecode.scm (write-bytecode):
Adapt to prompt changes.
* module/language/glil.scm (make-glil-prompt, glil-prompt-inline?):
Remove inline? flag.
(parse-glil, unparse-glil):
* module/language/glil/compile-assembly.scm (glil->assembly): Adapt to
<glil-prompt> change.
* module/language/tree-il/compile-glil.scm (flatten): Require the
handler of a <prompt> to be a lambda-case.
* module/language/tree-il/primitives.scm (*primitive-expand-table*):
Ensure that the handler of a <prompt> is a lambda-case.
* module/language/tree-il/inline.scm (inline!): Simplify a degenerate
case: (lambda args (apply (lambda ...) args)) => (lambda ...).
Diffstat (limited to 'libguile/vm-i-system.c')
-rw-r--r-- | libguile/vm-i-system.c | 12 |
1 files changed, 5 insertions, 7 deletions
diff --git a/libguile/vm-i-system.c b/libguile/vm-i-system.c index a262d443f..98ef189e4 100644 --- a/libguile/vm-i-system.c +++ b/libguile/vm-i-system.c @@ -1450,13 +1450,12 @@ VM_DEFINE_INSTRUCTION (82, make_symbol, "make-symbol", 0, 1, 1) NEXT; } -VM_DEFINE_INSTRUCTION (83, prompt, "prompt", 5, 2, 0) +VM_DEFINE_INSTRUCTION (83, prompt, "prompt", 4, 2, 0) { scm_t_int32 offset; - scm_t_uint8 inline_handler_p, escape_only_p; + scm_t_uint8 escape_only_p; SCM k, handler, prompt; - inline_handler_p = FETCH (); escape_only_p = FETCH (); FETCH_OFFSET (offset); POP (handler); @@ -1466,14 +1465,13 @@ VM_DEFINE_INSTRUCTION (83, prompt, "prompt", 5, 2, 0) /* Push the prompt onto the dynamic stack. The setjmp itself has to be local to this procedure. */ /* FIXME: do more error checking */ - prompt = scm_c_make_prompt (vm, k, handler, inline_handler_p, escape_only_p); + prompt = scm_c_make_prompt (vm, k, handler, escape_only_p); scm_i_set_dynwinds (scm_cons (prompt, scm_i_dynwinds ())); if (SCM_PROMPT_SETJMP (prompt)) { /* The prompt exited nonlocally. Cache the regs back from the vp, and go - to the handler or post-handler label. (The meaning of the label differs - depending on whether the prompt's handler is rendered inline or not.) - */ + to the handler. + */ CACHE_REGISTER (); /* Really we only need SP. FP and IP should be unmodified. */ ip += offset; |