summaryrefslogtreecommitdiffstats
path: root/struct.c
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2016-08-27 19:50:27 -0700
committerKaz Kylheku <kaz@kylheku.com>2016-08-27 19:50:27 -0700
commitd4091b09902b5f57eef994fe414966ae4b6b2097 (patch)
treeb1137cd2bcb70fb31e6ba1b418e97c2b5f9991ce /struct.c
parentba58645783d6a58d4a1193e1e6bc3815a048ed41 (diff)
downloadtxr-d4091b09902b5f57eef994fe414966ae4b6b2097.tar.gz
txr-d4091b09902b5f57eef994fe414966ae4b6b2097.tar.bz2
txr-d4091b09902b5f57eef994fe414966ae4b6b2097.zip
Optimize quasiquote code generation.
The surface motive here is to get better code than forms like (append (list 'a) (list 'b) ...). The ulterior motive is to suppress the memory explosion when heavily nested forms like ^^^^^^^^^^^x are expanded. This problem was uncovered by AFL (fast). * eval.c (optimize_qquote_form, optimize_qquote_args, optimize_qquote): New static functions. (expand_qquote_rec): New function. (expand_qquote): Contents moved into expand_qquote_rec. This function now optimizes the results of calling expand_qquote_rec.
Diffstat (limited to 'struct.c')
0 files changed, 0 insertions, 0 deletions