projects
/
sbcl.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
0.9.2.29:
[sbcl.git]
/
tests
/
dynamic-extent.impure.lisp
diff --git
a/tests/dynamic-extent.impure.lisp
b/tests/dynamic-extent.impure.lisp
index
6844273
..
dc67efa
100644
(file)
--- 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)))))
(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)
\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)))
(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))))
(funcall thunk))
(assert (< (- (get-bytes-consed) before) times))))
-#+(or x86 x86-64 alpha ppc)
+#+(or x86 x86-64 alpha ppc sparc)
(progn
(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 (dxlength 1 2 3))
(assert-no-consing (dxlength t t t t t t))
(assert-no-consing (dxlength))