diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2015-05-22 07:38:34 -0700 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2015-05-22 07:38:34 -0700 |
commit | d036239788b1825bfa05588d7f9ee379cd95fc54 (patch) | |
tree | ab26943583572b02c78c4c7d3c1ba8bc644cf69d /parser.c | |
parent | 43b371fa552149ad237fec114af4f4feb65fa5bf (diff) | |
download | txr-d036239788b1825bfa05588d7f9ee379cd95fc54.tar.gz txr-d036239788b1825bfa05588d7f9ee379cd95fc54.tar.bz2 txr-d036239788b1825bfa05588d7f9ee379cd95fc54.zip |
Ligher weight debug instrumentation.
This speeds up the TXR Lisp interpreter, because do_eval
sets up a debug frame and uses debug_return.
* debug.c (debug_block_s): Symbol removed.
(debug_init): Remove initialization of debug_block_s.
* debug.h (debug_block_s): Declaration removed.
(debug_enter): Do not establish a named block or a catch block;
no time-wasting unwind stack manipulation at all.
The debug_depth variable is managed by the extended setjmp
context now. Provide a return value variable, and a well-defined name to
branch to to exit from the debug block.
(debug_return): Do not use heavy-weight uw_block_return;
simply set the return variable and branch to debug_return_out
label.
* signal.h (EJ_DBG_MEMB, EJ_DBG_SAVE, EJ_DBG_REST,
EJ_OPT_MEMB, EJ_OPT_SAVE, EJ_OPT_REST): New macros.
(extended_jmp_buf): Define optional global state
variables using EJ_OPT_MEMB.
(extended_setjmp): Save and restore optional
globals using EJ_OPT_SAVE and EJ_OPT_RESTORE.
Now debug_depth is saved and restored if
debugging support is compiled in.
* match.c (open_data_source): Remove bogus debug_return
invocations which were uncovered here by changes to the macro.
* eval.c (do_eval, expand_macro): debug_return must now be after
debug_end, because it won't dynamically clean up frames that it doesn't
know about. The set_dyn_env is no longer unreachable in expand_macro;
it is now necessary because debug_return isn't doing the longjmp
that previously restored dyn_env.
Diffstat (limited to 'parser.c')
0 files changed, 0 insertions, 0 deletions