diff options
author | Andy Wingo <wingo@pobox.com> | 2013-06-28 19:47:03 +0200 |
---|---|---|
committer | Andy Wingo <wingo@pobox.com> | 2013-06-28 19:52:09 +0200 |
commit | c32b7c4cef1c63a677a1c447a0386e90ab2ecd42 (patch) | |
tree | a1e1aad96639736f3e18c48a73a6f9d1fd24bacc /doc/ref | |
parent | 5e0253f19ef146c46a08fead9d70866f4baa9ca1 (diff) | |
download | guile-c32b7c4cef1c63a677a1c447a0386e90ab2ecd42.tar.gz |
Remove with-fluids; replaced by with-fluid* and inlined push-fluid primops
* libguile/vm-i-system.c (push-fluid, pop-fluid):
* doc/ref/vm.texi (Dynamic Environment Instructions): Rename wind-fluids
to push-fluid, and unwind-fluids to pop-fluid. They now only work on
one fluid binding at a time.
* module/ice-9/boot-9.scm (with-fluid*): Implement in Scheme in terms of
primcalls to push-fluid and pop-fluid.
(custom-throw-handler, catch, with-throw-handler): Use with-fluid*
instead of with-fluids, as with-fluids is no longer available before
psyntax is loaded.
(with-fluids): Define in Scheme in terms of with-fluid*.
* libguile/fluids.c (scm_with_fluid): Rename from scm_with_fluids, and
don't expose to Scheme.
* libguile/eval.c (eval): Remove SCM_M_WITH_FLUIDS case.
* libguile/expand.c (expand_with_fluids): Remove with-fluids syntax.
(DYNLET): Remove, no longer defining dynlet in the %expanded-vtables.
* libguile/expand.h: Remove dynlet definitions.
* module/ice-9/eval.scm (primitive-eval): Remove with-fluids case.
* libguile/memoize.c (do_push_fluid, do_pop_fluid): New primitive
helpers, like wind and unwind.
(memoize): Memoize wind and unwind primcalls. Don't memoize dynlet to
with-fluids.
(scm_init_memoize): Initialize push_fluid and pop_fluid here.
* libguile/memoize.h (SCM_M_WITH_FLUIDS): Remove definition.
* module/ice-9/psyntax.scm (build-dynlet): Remove; this just supported
with-fluids, which is now defined in boot-9.
* module/ice-9/psyntax-pp.scm: Regenerate.
* doc/ref/compiler.texi (Tree-IL):
* module/language/tree-il.scm:
* module/language/tree-il/analyze.scm:
* module/language/tree-il/canonicalize.scm:
* module/language/tree-il/compile-glil.scm:
* module/language/tree-il/cse.scm:
* module/language/tree-il/debug.scm:
* module/language/tree-il/effects.scm: Remove <dynlet>. Add cases for
primcalls to push-fluid and pop-fluid in compile-glil.scm and
effects.scm.
* module/language/tree-il/peval.scm (peval): Factor out
with-temporaries; probably a bad idea, but works for now. Factor out
make-begin0 (a better idea). Inline primcalls to with-fluid*, and
remove dynlet cases.
* module/language/tree-il/primitives.scm (*interesting-primitive-names*):
Add with-fluid*.
Diffstat (limited to 'doc/ref')
-rw-r--r-- | doc/ref/compiler.texi | 8 | ||||
-rw-r--r-- | doc/ref/vm.texi | 13 |
2 files changed, 6 insertions, 15 deletions
diff --git a/doc/ref/compiler.texi b/doc/ref/compiler.texi index 408c10809..553c270e7 100644 --- a/doc/ref/compiler.texi +++ b/doc/ref/compiler.texi @@ -458,14 +458,6 @@ original binding names, @var{gensyms} are gensyms corresponding to the A version of @code{<let>} that creates recursive bindings, like Scheme's @code{letrec}, or @code{letrec*} if @var{in-order?} is true. @end deftp -@deftp {Scheme Variable} <dynlet> fluids vals body -@deftpx {External Representation} (dynlet @var{fluids} @var{vals} @var{body}) -Dynamic binding; the equivalent of Scheme's @code{with-fluids}. -@var{fluids} should be a list of Tree-IL expressions that will -evaluate to fluids, and @var{vals} a corresponding list of expressions -to bind to the fluids during the dynamic extent of the evaluation of -@var{body}. -@end deftp @deftp {Scheme Variable} <prompt> tag body handler @deftpx {External Representation} (prompt @var{tag} @var{body} @var{handler}) A dynamic prompt. Instates a prompt named @var{tag}, an expression, diff --git a/doc/ref/vm.texi b/doc/ref/vm.texi index 76e3ab9ff..1e10eb02e 100644 --- a/doc/ref/vm.texi +++ b/doc/ref/vm.texi @@ -1120,18 +1120,17 @@ wind/unwind thunk pair. @code{unwind} instructions should be properly paired with their winding instructions, like @code{wind}. @end deffn -@deffn Instruction wind-fluids n -Pop off @var{n} values and @var{n} fluids from the stack, in that order. -Set the fluids to the values by creating a with-fluids object and -pushing that object on the dynamic stack. @xref{Fluids and Dynamic -States}. +@deffn Instruction push-fluid +Pop a value and a fluid from the stack, in that order. Set the fluid +to the value by creating a with-fluids object and pushing that object +on the dynamic stack. @xref{Fluids and Dynamic States}. @end deffn -@deffn Instruction unwind-fluids +@deffn Instruction pop-fluid Pop a with-fluids object from the dynamic stack, and swap the current values of its fluids with the saved values of its fluids. In this way, the dynamic environment is left as it was before the corresponding -@code{wind-fluids} instruction was processed. +@code{wind-fluid} instruction was processed. @end deffn @deffn Instruction fluid-ref |