summaryrefslogtreecommitdiffstats
path: root/eval.h
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2015-11-03 19:57:40 -0800
committerKaz Kylheku <kaz@kylheku.com>2015-11-03 19:57:40 -0800
commit7ab744e142b33e641a72b163a4f6f9a2eaf18f15 (patch)
treee86816da7b50c67c48c98dd8318f7dba654a4387 /eval.h
parentf53fea8d4d8428e81a048cab5ac323d3a3979b00 (diff)
downloadtxr-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.h')
0 files changed, 0 insertions, 0 deletions