diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2018-07-09 20:36:03 -0700 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2018-07-09 20:36:03 -0700 |
commit | b342d42c002f92f6b34923a1f362563e004d96a0 (patch) | |
tree | 50e54b5463ff45700883f41e946f7d9a861f02d4 | |
parent | c6457e45905a6fedc80db5edf0b11a19d0f6d9a1 (diff) | |
download | txr-b342d42c002f92f6b34923a1f362563e004d96a0.tar.gz txr-b342d42c002f92f6b34923a1f362563e004d96a0.tar.bz2 txr-b342d42c002f92f6b34923a1f362563e004d96a0.zip |
compiler: don't hardcode eq in if optimization.
* share/txr/stdlib/compiler.tl (copmiler comp-ift): In the
case when both values being compared are constant
expressions, evaluate the comparison statically using the
function, rather than a hard coded eq. Right now, the only
funtion handled is in fact eq.
-rw-r--r-- | share/txr/stdlib/compiler.tl | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/share/txr/stdlib/compiler.tl b/share/txr/stdlib/compiler.tl index d1f5c016..6d50296d 100644 --- a/share/txr/stdlib/compiler.tl +++ b/share/txr/stdlib/compiler.tl @@ -497,7 +497,7 @@ (set fun [%test-inv% fun]) (swap then else)) (if (and (constantp left) (constantp right)) - me.(compile oreg env (if (eq (eval left) (eval right)) then else)) + me.(compile oreg env (if (call fun (eval left) (eval right)) then else)) (let* ((le-oreg me.(alloc-treg)) (ri-oreg me.(alloc-treg)) (lelse (gensym "l")) |