Bug fix: compile was not actually compiling the correct functions
commit11de3cf22aba18c1ec7760eee08c9a4216bc8ad1
authorKris Katterjohn <katterjohn@gmail.com>
Sat, 3 Oct 2020 20:43:24 +0000 (3 16:43 -0400)
committerKris Katterjohn <katterjohn@gmail.com>
Sat, 3 Oct 2020 20:43:24 +0000 (3 16:43 -0400)
tree3d1b9b545b0456d8f1cc01db38c865495d6e071a
parent3716984cf446db2dab6f7a101366662cdcc0602c
Bug fix: compile was not actually compiling the correct functions

Since the introduction of the arg-checking DEFMFUN (see, for example,
commit e7b16e89 from September 2018), attempting to call compile on
a function defined with DEFMFUN hasn't really been compiling the
correct function.

When DEFMFUN is used to define a function $FOO, it creates a function
$FOO and another internal function FOO-IMPL.  FOO-IMPL contains the
real function code, while $FOO contains the arg-checking code.

When a function bar is translated, in many cases it gets defined using
DEFMFUN (there are some exceptions).  Then the translation of bar goes
into BAR-IMPL while the DEFMFUN arg-checking stuff goes in $BAR.  When
compiling bar via compile(bar), only $BAR has been getting compiled
since compile has known nothing about the internal function BAR-IMPL.

Now we compile the internal function at the same time.

This matters for lisp implementations that have interpreted functions.

No problems with the test suite or share test suite.
tests/rtest_translator.mac runs as expected, with a new test.
src/transs.lisp
tests/rtest_translator.mac