From 8ffd07054df02af3fff3eedd64144e148b015f57 Mon Sep 17 00:00:00 2001 From: Kaz Kylheku Date: Sun, 25 Dec 2016 21:26:26 -0800 Subject: Add qquot optimization for ranges. * eval.c (optimize_qquote_form): Check for a rcons forms. If thearguments are nothing but quoted forms, convert to literal range. --- eval.c | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'eval.c') diff --git a/eval.c b/eval.c index dbb7a21f..b192459a 100644 --- a/eval.c +++ b/eval.c @@ -2870,6 +2870,16 @@ static val optimize_qquote_form(val form) return rlcp_tree(cons(list_s, args), form); } + if (sym == rcons_s) { + if (args && cdr(args) && !cddr(args) && + all_satisfy(args, quote_form_p_f, nil)) + { + val args_noq = mapcar(second_f, args); + return rlcp(rcons(first(args_noq), second(args_noq)), form); + } + return form; + } + return form; } } -- cgit v1.2.3