Fix test failure as a result of #+immobile-code.
commit63153a5541e4bc9ba99a7a48345c6bdc98f425de
authorDouglas Katzman <dougk@google.com>
Tue, 28 Mar 2017 02:14:09 +0000 (27 22:14 -0400)
committerDouglas Katzman <dougk@google.com>
Tue, 28 Mar 2017 02:19:42 +0000 (27 22:19 -0400)
tree892d1281892c65677e292adb432524a024bf6e4a
parent380d59229bb6ec325e2613eea6e37949f2f304e1
Fix test failure as a result of #+immobile-code.

Normally the trampoline made by INSTALL-GUARD-FUN is a closure that captures
SYMBOL, invoking ERROR to construct an UNDEFINED-FUNCTION condition.
Immobile-code works differently though: to store a closure as a named function
requires consing a new trampoline to call the closure, since we don't load RAX
with the address of the callee. But we don't cons anything to install the
undefined-tramp asm routine. We use the CALL instruction to get from the fdefn
to the asm routine, which pops the return PC to compute the fdefn, and it
invokes undefined-fun-error with an fdefn which has a possibly wacky name,
if it named a special form, in which case we have to unwacky-ize it.
src/code/interr.lisp