1.0.4.1: fix sb-posix atime/mtime/ctime
[sbcl.git] / tests / dynamic-extent.impure.lisp
index 6844273..ba18278 100644 (file)
@@ -6,11 +6,14 @@
 ;;;; 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.
 
+(when (eq sb-ext:*evaluator-mode* :interpret)
+  (sb-ext:quit :unix-status 104))
+
 (setq sb-c::*check-consistency* t)
 
 (defmacro defun-with-dx (name arglist &body body)
     (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)))
 
 \f
 (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)))
       (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))
 (bdowning-2005-iv-16)
 
 \f
-(sb-ext:quit :unix-status 104)