Attached patch changes DEFINED-FUN-FUNCTIONAL into DEFINED-FUN-FUNCTIONALS, an alist indexed by the LEXENV-POLICY.
It fixes the symptoms and doesn't cause any (apparent) regressions, but I don't really like it: not only does it feel kludgy, it also seems to me that DEFINED-FUN-FUNCTIONAL should not really hold inline expansions at all, just NAMED-LAMBDA functionals for use with block compilation.
Note how in the original bug the two ACCs have been coalesced as if they had been declared MAYBE-INLINE: this will still happen with the patch, if the policies match. (I am not strictly opposed to such coalescing, but ...)
Removing inline expansions from DEFINED-FUN-FUNCTIONAL and instead caching them in a component-local hash-table indexed by policy and function name seems like a nicer way to handle this, maybe.
Attached patch changes DEFINED- FUN-FUNCTIONAL into DEFINED- FUN-FUNCTIONALS , an alist indexed by the LEXENV-POLICY.
It fixes the symptoms and doesn't cause any (apparent) regressions, but I don't really like it: not only does it feel kludgy, it also seems to me that DEFINED- FUN-FUNCTIONAL should not really hold inline expansions at all, just NAMED-LAMBDA functionals for use with block compilation.
Note how in the original bug the two ACCs have been coalesced as if they had been declared MAYBE-INLINE: this will still happen with the patch, if the policies match. (I am not strictly opposed to such coalescing, but ...)
Removing inline expansions from DEFINED- FUN-FUNCTIONAL and instead caching them in a component-local hash-table indexed by policy and function name seems like a nicer way to handle this, maybe.