X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcompiler%2Fdisassem.lisp;h=b58838cc83399390a9efc41a42ec23aa7f8fe825;hb=dfa55a883f94470267b626dae77ce7e7dfac3df6;hp=8cfaea5b8e05b86e9c93f8c22fea60d6350b7a31;hpb=c9c0e648c51317ff374851c4fcc740a15d37acae;p=sbcl.git diff --git a/src/compiler/disassem.lisp b/src/compiler/disassem.lisp index 8cfaea5..b58838c 100644 --- a/src/compiler/disassem.lisp +++ b/src/compiler/disassem.lisp @@ -10,9 +10,6 @@ ;;;; files for more information. (in-package "SB!DISASSEM") - -(file-comment - "$Header$") ;;; types and defaults @@ -61,7 +58,7 @@ #| (defmacro set-disassem-params (&rest args) #!+sb-doc - "Specify global disassembler params. Keyword arguments include: + "Specify global disassembler params. &KEY arguments include: :INSTRUCTION-ALIGNMENT number Minimum alignment of instructions, in bits. @@ -106,7 +103,7 @@ ;;;; cached functions -(defstruct function-cache +(defstruct (function-cache (:copier nil)) (printers nil :type list) (labellers nil :type list) (prefilters nil :type list)) @@ -224,7 +221,8 @@ length mask id printer - labeller prefilter control))) + labeller prefilter control)) + (:copier nil)) (name nil :type (or symbol string)) (format-name nil :type (or symbol string)) @@ -251,23 +249,25 @@ ;;;; an instruction space holds all known machine instructions in a form that ;;;; can be easily searched -(defstruct (inst-space (:conc-name ispace-)) +(defstruct (inst-space (:conc-name ispace-) + (:copier nil)) (valid-mask dchunk-zero :type dchunk) ; applies to *children* (choices nil :type list)) (def!method print-object ((ispace inst-space) stream) (print-unreadable-object (ispace stream :type t :identity t))) -(defstruct (inst-space-choice (:conc-name ischoice-)) +(defstruct (inst-space-choice (:conc-name ischoice-) + (:copier nil)) (common-id dchunk-zero :type dchunk) ; applies to *parent's* mask (subspace (required-argument) :type (or inst-space instruction))) ;;;; These are the kind of values we can compute for an argument, and -;;;; how to compute them. The :checker functions make sure that a given +;;;; how to compute them. The :CHECKER functions make sure that a given ;;;; argument is compatible with another argument for a given use. (defvar *arg-form-kinds* nil) -(defstruct arg-form-kind +(defstruct (arg-form-kind (:copier nil)) (names nil :type list) (producer (required-argument) :type function) (checker (required-argument) :type function)) @@ -309,7 +309,8 @@ (prefilter nil) (use-label nil)) -(defstruct (instruction-format (:conc-name format-)) +(defstruct (instruction-format (:conc-name format-) + (:copier nil)) (name nil) (args nil :type list) @@ -319,7 +320,9 @@ ;;; A FUNSTATE holds the state of any arguments used in a disassembly ;;; function. -(defstruct (funstate (:conc-name funstate-) (:constructor %make-funstate)) +(defstruct (funstate (:conc-name funstate-) + (:constructor %make-funstate) + (:copier nil)) (args nil :type list) (arg-temps nil :type list)) ; See below. @@ -354,7 +357,8 @@ ;;;; (notably functions), we sometimes use a VALSRC structure to keep track of ;;;; the source from which they were derived. -(defstruct (valsrc (:constructor %make-valsrc)) +(defstruct (valsrc (:constructor %make-valsrc) + (:copier nil)) (value nil) (source nil)) @@ -801,8 +805,7 @@ #!+sb-doc "DEFINE-ARGUMENT-TYPE Name {Key Value}* Define a disassembler argument type NAME (which can then be referenced in - another argument definition using the :TYPE keyword argument). Keyword - arguments are: + another argument definition using the :TYPE argument). &KEY args are: :SIGN-EXTEND boolean If non-NIL, the raw value of this argument is sign-extended. @@ -971,7 +974,8 @@ (valsrc-value thing) thing)) -(defstruct (cached-function (:conc-name cached-fun-)) +(defstruct (cached-function (:conc-name cached-fun-) + (:copier nil)) (funstate nil :type (or null funstate)) (constraint nil :type list) (name nil :type (or null symbol)))