X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=tests%2Fdynamic-extent.impure.lisp;h=8a26b5856f8e020884df1784f3ddf3bf17097690;hb=a8781d6c5b68a6b08315e98f70a407d992e07363;hp=3c0d247bdcf5d6509ff074760ed58e615f3bf4e7;hpb=08b0e98910af7154f2afe68f2f16618754f74461;p=sbcl.git diff --git a/tests/dynamic-extent.impure.lisp b/tests/dynamic-extent.impure.lisp index 3c0d247..8a26b58 100644 --- a/tests/dynamic-extent.impure.lisp +++ b/tests/dynamic-extent.impure.lisp @@ -6,7 +6,7 @@ ;;;; While most of SBCL is derived from the CMU CL system, the test ;;;; files (like this one) were written from scratch after the fork ;;;; from CMU CL. -;;;; +;;;; ;;;; This software is in the public domain and is provided with ;;;; absolutely no warranty. See the COPYING and CREDITS files for ;;;; more information. @@ -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,19 +134,16 @@ (funcall thunk)) (assert (< (- (get-bytes-consed) before) times)))) -#+(or x86 x86-64 alpha ppc) +#+(or x86 x86-64 alpha ppc sparc mips) (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)) (assert-no-consing (dxcaller 1 2 3 4 5 6 7)) - #-ppc (assert-no-consing (test-nip-values)) - #-ppc (assert-no-consing (test-let-var-subst1 17)) - #-ppc (assert-no-consing (test-let-var-subst2 17)) - #-ppc (assert-no-consing (test-lvar-subst 11))) @@ -178,4 +188,3 @@ (bdowning-2005-iv-16) -(sb-ext:quit :unix-status 104)