** ENDP in safe mode checks its argument to be of type LIST;
** COPY-SYMBOL in a threaded build no longer fails when the symbol
in question is unbound;
+ ** optimized MAKE-INSTANCE functions no longer cause internal
+ assertion failures in the presence of duplicate initargs;
planned incompatible changes in 0.8.x:
* (not done yet, but planned:) When the profiling interface settles
(multiple-value-bind (si-around si-before si-primary si-after)
(standard-sort-methods si-methods)
(declare (ignore si-primary))
- (assert (and (null ii-around) (null si-around)))
+ (aver (and (null ii-around) (null si-around)))
(let ((initargs (ctor-initargs ctor))
(slot-inits (slot-init-forms ctor (or ii-before si-before))))
(values
(cdr (assoc initarg initarg-locations :test #'eq)))
(class-init (location type val)
- (assert (consp location))
+ (aver (consp location))
(unless (assoc location class-inits :test #'eq)
(push (list location type val) class-inits)))
(instance-init (location type val)
- (assert (integerp location))
- (assert (not (instance-slot-initialized-p location)))
- (setf (aref slot-vector location) (list type val)))
+ (aver (integerp location))
+ (unless (instance-slot-initialized-p location)
+ (setf (aref slot-vector location) (list type val))))
(instance-slot-initialized-p (location)
(not (null (aref slot-vector location)))))
;;; (we can't call it without defining methods on allocate-instance
;;; etc., but we should be able to define it).
\f
+;;; the ctor MAKE-INSTANCE optimizer used not to handle duplicate
+;;; initargs.
+(defclass dinitargs-class1 ()
+ ((a :initarg :a)))
+(assert (= (slot-value (make-instance 'dinitargs-class1 :a 1 :a 2) 'a) 1))
+
+(defclass dinitargs-class2 ()
+ ((b :initarg :b1 :initarg :b2)))
+(assert (= (slot-value (make-instance 'dinitargs-class2 :b2 3 :b1 4) 'b) 3))
+\f
;;; success
(sb-ext:quit :unix-status 104)
\ No newline at end of file
;;; 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.pre8.90"
+"0.pre8.91"