diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2015-11-03 19:57:40 -0800 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2015-11-03 19:57:40 -0800 |
commit | 7ab744e142b33e641a72b163a4f6f9a2eaf18f15 (patch) | |
tree | e86816da7b50c67c48c98dd8318f7dba654a4387 /eval.c | |
parent | f53fea8d4d8428e81a048cab5ac323d3a3979b00 (diff) | |
download | txr-7ab744e142b33e641a72b163a4f6f9a2eaf18f15.tar.gz txr-7ab744e142b33e641a72b163a4f6f9a2eaf18f15.tar.bz2 txr-7ab744e142b33e641a72b163a4f6f9a2eaf18f15.zip |
Factor out excessive uw_set_match_context calls.
We only need to stash the TXR matcher's context in an
environment frame when there is the possibility that
Lisp code may be called, or filters which re-enter
the matcher directly or through Lisp code.
* match.c (eval_with_bindings, eval_progn_with_bindings): New
static functions.
(dest_bind): Use eval_with_bindings instead of five lines
of boilerplate code.
(h_chr): No need to stash context around dest_bind;
lower levels take care of it.
(subst_vars): Do set up match context around the body
of this function, for the sake of Lisp calls and filtering
in format_field. Use eval_with_bindings.
(do_txeval): Remove match context environment frame setup
around subst_vars. Use eval_with_bindings, too.
(do_output_line): Use eval_with_bindings.
(v_output): No match context environment frame around
do_output.
(v_do, v_require): Use eval_progn_with_bindings instead of
five line boilerplate.
(v_line): No match context frame around dest_bind.
(h_do): Use eval_progn_with_bindings.
Diffstat (limited to 'eval.c')
0 files changed, 0 insertions, 0 deletions