Fix the inefficient evaluation of translated predicates
commit159bda56c35137cfb4123cac9802acce2af22507
authorKris Katterjohn <katterjohn@gmail.com>
Sun, 13 Nov 2022 03:42:15 +0000 (12 22:42 -0500)
committerKris Katterjohn <katterjohn@gmail.com>
Sun, 13 Nov 2022 03:42:15 +0000 (12 22:42 -0500)
tree816c9e9d82d233b73a899b87ed1c3000da819cce
parent32deb09e209877f2398de7c01de0333e590ab317
Fix the inefficient evaluation of translated predicates

Translated predicates that don't evaluate to a boolean value have
been needlessly doing extra and repeated work.

For example, a > comparison would translate to a MGRP call followed
by IS-BOOLE-CHECK or MAYBE-BOOLE-CHECK.  If the comparison didn't
yield a boolean, then a MGRP expression would be returned by MGRP,
which would get passed to a FOO-BOOLE-CHECK, which would then call
MEVALP_TR to evaluate the expression, which eventually just calls
MGRP yet again.

An upcoming commit will be making changes to translated predicates,
and after that this bug would cause a much more significant slow down
in various cases.

No problems with the test suite, share test suite or rtest_translator.
src/acall.lisp
src/trpred.lisp