summaryrefslogtreecommitdiffstats
path: root/eval.c
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2019-08-31 22:33:29 -0700
committerKaz Kylheku <kaz@kylheku.com>2019-08-31 22:33:29 -0700
commit2d2cfdc16d4d96fa685853d96b8b7f86ec7dd27d (patch)
tree47e113fb435ce842002faaa3c48c08dd05c541e7 /eval.c
parent7dc1bd077837c61d2ebdeb53f7ae896a760011fe (diff)
downloadtxr-2d2cfdc16d4d96fa685853d96b8b7f86ec7dd27d.tar.gz
txr-2d2cfdc16d4d96fa685853d96b8b7f86ec7dd27d.tar.bz2
txr-2d2cfdc16d4d96fa685853d96b8b7f86ec7dd27d.zip
interpreter: trivial let goes through let* case.
* eval.c (bindings_helper): If there are no bindings or just one binding, then go through the sequential case. Thus trivial let is treated like let*. This avoids the continuation-related overheads incurred in the parallel case.
Diffstat (limited to 'eval.c')
-rw-r--r--eval.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/eval.c b/eval.c
index ad8ed0c9..ef57289f 100644
--- a/eval.c
+++ b/eval.c
@@ -1656,7 +1656,7 @@ static val bindings_helper(val vars, val env, val sequential,
val iter, var;
list_collect_decl (new_bindings, ptail);
- if (sequential) {
+ if (sequential || vars == nil || cdr(vars) == nil) {
for (iter = vars; iter; iter = cdr(iter)) {
val item = car(iter);
val value = nil;