diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2019-01-30 06:36:39 -0800 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2019-01-30 06:36:39 -0800 |
commit | 3330b1593c5d591aecbacfdae5a06ade661d9fd6 (patch) | |
tree | fa066df08b1b5f4736236c9cf4ea8796f6946146 /strudel.h | |
parent | 79fef71c0f043aa7eba5251fe2a76d33bd4c4359 (diff) | |
download | txr-3330b1593c5d591aecbacfdae5a06ade661d9fd6.tar.gz txr-3330b1593c5d591aecbacfdae5a06ade661d9fd6.tar.bz2 txr-3330b1593c5d591aecbacfdae5a06ade661d9fd6.zip |
caseql: generate better code.
* eval.c (me_case): Replace a code generation pattern of the
(if (and x y) z) with the equivalent (and x y z). The
motivation behind this is that it effectively coaxes a
jump-threading optimization out of our simplistic compiler.
The failure cases out of a single *and* all jump past the
entire code block, whereas with the cascaded if + and we get
a double test of the same failed value threading through two
branches.
Diffstat (limited to 'strudel.h')
0 files changed, 0 insertions, 0 deletions