diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2019-08-31 22:33:29 -0700 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2019-08-31 22:33:29 -0700 |
commit | 93fdbd85b7ce2dd875edbefa460c97489d46b428 (patch) | |
tree | 47e113fb435ce842002faaa3c48c08dd05c541e7 | |
parent | 688b588267467eca0d6c2a65e09166fc8aca79fc (diff) | |
download | txr-93fdbd85b7ce2dd875edbefa460c97489d46b428.tar.gz txr-93fdbd85b7ce2dd875edbefa460c97489d46b428.tar.bz2 txr-93fdbd85b7ce2dd875edbefa460c97489d46b428.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.
-rw-r--r-- | eval.c | 2 |
1 files changed, 1 insertions, 1 deletions
@@ -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; |