* STREAM-READ-SEQUENCE and STREAM-WRITE-SEQUENCE now have methods
defined on the relevant FUNDAMENTAL-BINARY-{INPUT,OUTPUT}-STREAM
classes. (thanks to Antonio Martinez)
+ * fixed some bugs revealed by Paul Dietz' test suite:
+ ** NIL is now allowed as a structure slot name.
planned incompatible changes in 0.8.x:
* (not done yet, but planned:) When the profiling interface settles
(defconstant unit-bits n-word-bits)
;;; the maximum number of bits that can be dealt with in a single call
-(defconstant max-bits (ash most-positive-fixnum -2))
+(defconstant max-bits (ash sb!xc:most-positive-fixnum -2))
(deftype unit ()
`(unsigned-byte ,unit-bits))
:index 0
:type t)))
(multiple-value-bind (name default default-p type type-p read-only ro-p)
- (cond
- ((listp spec)
- (destructuring-bind
- (name
- &optional (default nil default-p)
- &key (type nil type-p) (read-only nil ro-p))
- spec
- (values name
- default default-p
- (uncross type) type-p
- read-only ro-p)))
- (t
- (when (keywordp spec)
- (style-warn "Keyword slot name indicates probable syntax ~
- error in DEFSTRUCT: ~S."
- spec))
- spec))
+ (typecase spec
+ (symbol
+ (when (keywordp spec)
+ (style-warn "Keyword slot name indicates probable syntax ~
+ error in DEFSTRUCT: ~S."
+ spec))
+ spec)
+ (cons
+ (destructuring-bind
+ (name
+ &optional (default nil default-p)
+ &key (type nil type-p) (read-only nil ro-p))
+ spec
+ (values name
+ default default-p
+ (uncross type) type-p
+ read-only ro-p)))
+ (t (error 'simple-program-error
+ :format-control "in DEFSTRUCT, ~S is not a legal slot ~
+ description."
+ :format-arguments (list spec))))
(when (find name (dd-slots defstruct)
:test #'string=
(maximum 0)
(minimum 0)
(keys ())
+ (key-seen nil)
;; ANSI specifies that dotted lists are "treated exactly as if the
;; parameter name that ends the list had appeared preceded by &rest."
;; We force this behavior by transforming dotted lists into ordinary
(setq rest-name (gensym "KEYWORDS-"))
(push rest-name *ignorable-vars*)
(setq restp t)
+ (setq key-seen t)
(push-let-binding rest-name path t))
(&allow-other-keys
(setq allow-other-keys-p t))
:minimum ,minimum
:maximum ,explicit-maximum)))
*arg-tests*))
- (when keys
+ (when key-seen
(let ((problem (gensym "KEY-PROBLEM-"))
(info (gensym "INFO-")))
(push `(multiple-value-bind (,problem ,info)
(dtype (continuation-value dtype)))
(unless (eq atype nil)
(compiler-warn
- "Asserted type ~S conflicts with derived type ~S."
+ "~@<Asserted type ~S conflicts with derived type ~S.~@:>"
atype dtype))))
(ir2-convert-full-call node block)))
(inst mov (make-ea :dword :scale 1 :index ,temp) ,reg)))
#!-sb-thread
(defmacro store-tl-symbol-value (reg symbol temp)
+ (declare (ignore temp))
`(store-symbol-value ,reg ,symbol))
(defmacro load-type (target source &optional (offset 0))
;;; formalized, in documentation and in macro definition,
;;; with the macro becoming e.g. PSEUDO-ATOMIC-ALLOCATION.
(defun allocation (alloc-tn size &optional inline)
+ ;; FIXME: since it appears that inline allocation is gone, we should
+ ;; remove the INLINE parameter, and all the above comments.
+ (declare (ignore inline))
(flet ((load-size (dst-tn size)
(unless (and (tn-p size) (location= alloc-tn size))
(inst mov dst-tn size))))
;;; checkins which aren't released. (And occasionally for internal
;;; versions, especially for internal versions off the main CVS
;;; branch, it gets hairier, e.g. "0.pre7.14.flaky4.13".)
-"0.8.0.12"
+"0.8.0.13"