X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=tests%2Fdynamic-extent.impure.lisp;h=8a26b5856f8e020884df1784f3ddf3bf17097690;hb=2fb5b174f6acb88a85c86aa4cd753ddefaccc987;hp=6844273efa7b350178ed26fb82b6cae81934e114;hpb=16a6592367eec7c5e9da668ec42fd260e7705b0c;p=sbcl.git diff --git a/tests/dynamic-extent.impure.lisp b/tests/dynamic-extent.impure.lisp index 6844273..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,8 +134,9 @@ (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)) @@ -174,4 +188,3 @@ (bdowning-2005-iv-16) -(sb-ext:quit :unix-status 104)