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