[slime-devel] Re: compiling forms/regions/defuns with (optimize (debug 3) (speed 0) (safety 0))

Juho Snellman jsnell at iki.fi
Wed Nov 22 04:26:45 UTC 2006

<heller at common-lisp.net> wrote:
> * Marco Baringer [2006-11-21 18:57+0100] writes:
>> what do people think about a varient of slime-compile-defun which
>> wrapped the code in
>> (locally 
>>   (declaim (optimize (speed 0) (safety 3) (debug 3)))
>>   , at form)
>> i'd bind this to C-u C-c C-c (and C-u C-c C-k)
>> good idea? bad idea?
> Bad idea, because it will mess up source code locations.
> Would something like 
>  (eval `(locally (declaim (optimize (speed 0) (safety 3) (debug 3)))
>                  (compile ,form)))
> do the right thing?

No. Declaim will apply the declarations into the global environment,
so any subsequent compilations would also be done using that
optimization policy. Wrapping a locally around the declamation will
not change that.

I'm afraid there's no portable way of restoring the optimization
policy back to its original state. CMUCL has an extension to
with-compilation-unit for this. In SBCL swank-compile-string could
bind sb-c::*policy*, proclaim the new policy, and only then do the
compile-file. I don't know about other implementations.

Juho Snellman

More information about the slime-devel mailing list