X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=tests%2Fexhaust.impure.lisp;h=ef21e7c0351ced9b9272bce6929ebe13ef282681;hb=e5d96999ae4388181ddb0c113313f26afbe997e8;hp=79f44a4e671941dacb213241956dd348456179f5;hpb=7244742c3a9478d13d813aaae8135973eb4b89aa;p=sbcl.git diff --git a/tests/exhaust.impure.lisp b/tests/exhaust.impure.lisp index 79f44a4..ef21e7c 100644 --- a/tests/exhaust.impure.lisp +++ b/tests/exhaust.impure.lisp @@ -70,4 +70,31 @@ (recurse))))) (assert (= exhaust-count recurse-count *count*))) +(with-test (:name (:exhaust :binding-stack)) + (let ((ok nil) + (symbols (loop repeat 1024 collect (gensym))) + (values (loop repeat 1024 collect nil))) + (gc :full t) + (labels ((exhaust-binding-stack (i) + (progv symbols values + (exhaust-binding-stack (1+ i))))) + (handler-case + (exhaust-binding-stack 0) + (sb-kernel::binding-stack-exhausted () + (setq ok t))) + (assert ok)))) + +#+c-stack-is-control-stack +(with-test (:name (:exhaust :alien-stack)) + (let ((ok nil)) + (labels ((exhaust-alien-stack (i) + (with-alien ((integer-array (array int 500))) + (+ (deref integer-array 0) + (exhaust-alien-stack (1+ i)))))) + (handler-case + (exhaust-alien-stack 0) + (sb-kernel::alien-stack-exhausted () + (setq ok t))) + (assert ok)))) + ;;; OK!