That's weird because the entire point of the change was to take the accessors *outside* of the eval-when.
It even looks right:

(macroexpand '(sb!disassem:define-instruction-format (xinstr 32 :default-printer '(:name :tab data))
  (op-to-a :field (byte 16 16))
  (data :field (byte 16 0) :reader xinstr-data)))

(PROGN
 (EVAL-WHEN (:COMPILE-TOPLEVEL :EXECUTE)
   (LET ((#:G626 32))
     (SETF (GETHASH 'XINSTR SB-DISASSEM::*DISASSEM-INST-FORMATS*)
             (SB-DISASSEM::MAKE-INST-FORMAT 'XINSTR (SB-DISASSEM::BITS-TO-BYTES #:G626)
                                            '(:NAME :TAB DATA)
                                            (LIST
                                             (SB-DISASSEM::MAKE-ARG 0 #:G626 'OP-TO-A :FIELD
                                                                    (BYTE 16 16))
                                             (SB-DISASSEM::MAKE-ARG 1 #:G626 'DATA :FIELD
                                                                    (BYTE 16 0)))))))
 (DECLAIM (INLINE XINSTR-DATA))
 (DEFUN XINSTR-DATA (SB-DISASSEM:DCHUNK SB-DISASSEM::DSTATE)
   (DECLARE (IGNORABLE SB-DISASSEM:DCHUNK SB-DISASSEM::DSTATE))
   (SB-DISASSEM::ARG-ACCESS-MACRO DATA XINSTR SB-DISASSEM:DCHUNK SB-DISASSEM::DSTATE)))

Is that function definitely not in the image? (vs I made a typo when changing 'unimp-control')?
The ppc instruction file uses an especially weird paradigm where most of the define-instruction's are themselves inside other macros, but it should have been enough that the define-format said it wanted a :READER.

Any guidance on this would be appreciated while I think about it.


On Fri, Mar 7, 2014 at 3:51 PM, Stas Boukarev <stassats@gmail.com> wrote:
"Douglas Katzman" <snuglas@users.sourceforge.net> writes:

> The branch "master" has been updated in SBCL:
>        via  b4b05aac3ab3e74fb26eb6ebb5e0b44f2841eaff (commit)
>       from  a14aed2ae830279710336218fbf50e049a91fbcc (commit)
>
> - Log -----------------------------------------------------------------
> commit b4b05aac3ab3e74fb26eb6ebb5e0b44f2841eaff
> Author: Douglas Katzman <dougk@google.com>
> Date:   Fri Feb 28 22:04:21 2014 -0500
>
>     De-obfuscate DEFINE-INSTRUCTION-FORMAT.
..
> --- a/src/compiler/ppc/insts.lisp
> +++ b/src/compiler/ppc/insts.lisp
> @@ -389,7 +389,7 @@
>
>  (sb!disassem:define-instruction-format (xinstr 32 :default-printer '(:name :tab data))
>    (op-to-a :field (byte 16 16))
> -  (data :field (byte 16 0)))
> +  (data :field (byte 16 0) :reader xinstr-data))
>
>  (sb!disassem:define-instruction-format (sc 32 :default-printer '(:name :tab rest))
>    (op :field (byte 6 26))
This causes DISASSEMBLE failures on ppc, XINSTR-DATA is not defined for
UNIMP-CONTROL to use. This form is wrapped in eval-when
(:compile-toplevel :execute), probably causing the issue.

--
With best regards, Stas.