(with-test (:name (:no-consing :dx-vectors) :skipped-on '(not :stack-allocatable-vectors))
(assert-no-consing (force-make-array-on-stack 128))
- (assert-no-consing (make-array-on-stack-1))
(assert-no-consing (make-array-on-stack-2 5 '(1 2.0 3 4.0 5)))
(assert-no-consing (make-array-on-stack-3 9 8 7))
(assert-no-consing (make-array-on-stack-4))
:fails-on :x86
:skipped-on `(not (and :stack-allocatable-vectors
:c-stack-is-control-stack)))
+ (assert-no-consing (make-array-on-stack-1))
(assert-no-consing (make-array-on-stack-6))
(assert-no-consing (make-array-on-stack-7))
(assert-no-consing (make-array-on-stack-8))
(with-test (:name (:no-consing :hash-tables) :fails-on '(and :ppc :sb-thread))
(assert-no-consing (test-hash-table)))
+;;; Both with-pinned-objects and without-gcing should not cons
+
+(defun call-without-gcing (fun)
+ (sb-sys:without-gcing (funcall fun)))
+
+(defun call-with-pinned-object (fun obj)
+ (sb-sys:with-pinned-objects (obj)
+ (funcall fun obj)))
+
+(with-test (:name (:no-consing :without-gcing))
+ (assert-no-consing (call-without-gcing (lambda ()))))
+
+(with-test (:name (:no-consing :with-pinned-objects))
+ (assert-no-consing (call-with-pinned-object #'identity 42)))
+
;;; with-mutex should use DX and not cons
(defvar *mutex* (sb-thread::make-mutex :name "mutexlock"))
(assert (every (lambda (x)
(sb-sys:sap= x (sb-sys:int-sap (+ 16 (ash 1 (1- width))))))
(funcall f (sb-sys:int-sap (ash 1 (1- width))))))))
+
+(with-test (:name :&more-bounds)
+ ;; lp#1154946
+ (assert (not (funcall (compile nil '(lambda (&rest args) (car args))))))
+ (assert (not (funcall (compile nil '(lambda (&rest args) (nth 6 args))))))
+ (assert (not (funcall (compile nil '(lambda (&rest args) (elt args 10))))))
+ (assert (not (funcall (compile nil '(lambda (&rest args) (cadr args))))))
+ (assert (not (funcall (compile nil '(lambda (&rest args) (third args)))))))