heller@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))) ,@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.