From: Travis C. <tr...@cr...> - 2005-12-29 23:57:33
|
Dimitry Gashinsky wrote: > ; in: LAMBDA NIL > ; (SB-KERNEL:FLOAT-WAIT) > ; > ; note: deleting unreachable code I'm not familiar with 'sb-aclrepl, but my guess is that this has to do with the CLX hack in the sb-ext:with-timeout code. (sb-ext:with-timeout 5 (princ "foo)) expands into (timer.lisp): (IF (> 5 0) (LET ((#:TIMER975 (MAKE-TIMER (LAMBDA () (CERROR "Continue" 'TIMEOUT))))) (SCHEDULE-TIMER #:TIMER975 5) (UNWIND-PROTECT (PROGN (PRINC "foo")) (UNSCHEDULE-TIMER #:TIMER975))) (PROGN (PRINC "foo"))) which clearly does in fact delete code. This issue seems to generate a lot of messages about deleting sb-kernel:float-wait when sb-ext:with-timeout is combined with handler-bind and related macros. The reason that the message only shows up on x86 platforms is the handler-bind macro includes a special case for x86 (defboot.lisp): ;; Wait for any float exceptions. #!+x86 (float-wait)))) I am not familiar with why this particular hack for CLX was needed, and it does seem to generate a substantial amount of needless notes and messages. Without fixing this bug, this noise can be muffled by wrapping any calls to sb-ext:with-timeout with: (locally (declare (sb-ext:muffle-conditions sb-ext:code-deletion-note)) ...) This is, of course, an ugly hack in and of itself. Cheers, -- Travis |