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
commitab98634ea8992722046ab857ec0eaec7cb024761 (patch)
treeb1137cd2bcb70fb31e6ba1b418e97c2b5f9991ce /struct.c
parent4ae5d419d61942fd2028f3d83aef6b0dffcfbda7 (diff)
downloadtxr-ab98634ea8992722046ab857ec0eaec7cb024761.tar.gz
txr-ab98634ea8992722046ab857ec0eaec7cb024761.tar.bz2
txr-ab98634ea8992722046ab857ec0eaec7cb024761.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