X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=tests%2Fdynamic-extent.impure.lisp;h=dc67efaf6374eb8d1d5c0226f537625033efa91a;hb=1714224f33ba559eab11af8827a78f9a5aebd698;hp=106923866ed2847c2b772705843eade49620bafa;hpb=7c7e6276719b8d40fddec2070cad81064a25c8ed;p=sbcl.git diff --git a/tests/dynamic-extent.impure.lisp b/tests/dynamic-extent.impure.lisp index 1069238..dc67efa 100644 --- a/tests/dynamic-extent.impure.lisp +++ b/tests/dynamic-extent.impure.lisp @@ -108,11 +108,24 @@ (assert (equal (multiple-value-list (test-alignment-dx-list form)) res)) (assert (equal *x* '(1 2 3 4))))) +;;; closure +(declaim (notinline true)) +(defun true (x) + (declare (ignore x)) + t) + +(defun-with-dx dxclosure (x) + (flet ((f (y) + (+ y x))) + (declare (dynamic-extent #'f)) + (true #'f))) + +(assert (eq t (dxclosure 13))) (defmacro assert-no-consing (form &optional times) - `(%assert-no-consing (lambda () ,form ,times))) + `(%assert-no-consing (lambda () ,form) ,times)) (defun %assert-no-consing (thunk &optional times) (let ((before (get-bytes-consed)) (times (or times 10000))) @@ -121,8 +134,9 @@ (funcall thunk)) (assert (< (- (get-bytes-consed) before) times)))) -#+(or x86 x86-64 alpha) +#+(or x86 x86-64 alpha ppc sparc) (progn + (assert-no-consing (dxclosure 42)) (assert-no-consing (dxlength 1 2 3)) (assert-no-consing (dxlength t t t t t t)) (assert-no-consing (dxlength)) @@ -130,8 +144,7 @@ (assert-no-consing (test-nip-values)) (assert-no-consing (test-let-var-subst1 17)) (assert-no-consing (test-let-var-subst2 17)) - (assert-no-consing (test-lvar-subst 11)) - ) + (assert-no-consing (test-lvar-subst 11))) ;;; Bugs found by Paul F. Dietz