X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Fcompiler%2Fgeneric%2Fobjdef.lisp;h=e942b54a55f3f28c46e3605ffbe038f4c2526b62;hb=d25e3478acccec70402ff32554669a982be8e281;hp=e2d8396acd9b085462580706fef43deff96c917e;hpb=409fcc671231b594ec010adf683f72a871ec1d6a;p=sbcl.git diff --git a/src/compiler/generic/objdef.lisp b/src/compiler/generic/objdef.lisp index e2d8396..e942b54 100644 --- a/src/compiler/generic/objdef.lisp +++ b/src/compiler/generic/objdef.lisp @@ -126,11 +126,16 @@ :ref-known (flushable foldable) :set-trans (setf %array-displacement) :set-known (unsafe)) - (displaced-p :type (member t nil) + (displaced-p :type t :ref-trans %array-displaced-p :ref-known (flushable foldable) :set-trans (setf %array-displaced-p) :set-known (unsafe)) + (displaced-from :type list + :ref-trans %array-displaced-from + :ref-known (flushable) + :set-trans (setf %array-displaced-from) + :set-known (unsafe)) (dimensions :rest-p t)) (define-primitive-object (vector :type vector @@ -317,7 +322,9 @@ ;; first data slot, and if you subtract 7 you get a symbol header. ;; also the CAR of NIL-as-end-of-list - (value :init :unbound :ref-known (flushable) :ref-trans symbol-global-value) + (value :init :unbound + :set-trans %set-symbol-global-value + :set-known (unsafe)) ;; also the CDR of NIL-as-end-of-list. Its reffer needs special ;; care for this reason, as hash values must be fixnums. (hash :set-trans %set-symbol-hash) @@ -403,4 +410,10 @@ (interrupt-data :c-type "struct interrupt_data *" :length #!+alpha 2 #!-alpha 1) (stepping) + ;; KLUDGE: On alpha, until STEPPING we have been lucky and the 32 + ;; bit slots came in pairs. However the C compiler will align + ;; interrupt_contexts on a double word boundary. This logic should + ;; be handled by DEFINE-PRIMITIVE-OBJECT. + #!+alpha + (padding) (interrupt-contexts :c-type "os_context_t *" :rest-p t))