Optimize circles a bit
After reviewing some disassembly elsewhere I realized that declaring a function
to return `(values)` and adding that form actually prevents last-call
optimization, at least in SBCL. It's a cleaner API, but it wastes lots of stack
frames.
Save the frames, kill the `(values)`.
author |
Steve Losh <steve@stevelosh.com> |
date |
Mon, 11 Jul 2016 19:56:43 +0000 |
parents |
23d4dc2900a1 |
children |
5c914fbcb042 |
(declaim (optimize (debug 3) (safety 3) (speed 0)))
(let ((*standard-output* (make-broadcast-stream))
(*error-output* (make-broadcast-stream)))
(asdf:load-system 'bones :force t)
(ql:quickload "bones-test"))
(defvar *passed* t)
(defun test (spec)
(let ((result (5am:run spec)))
(5am:explain! result)
(when (not (5am:results-status result))
(setf *passed* nil))))
(test :bones)
(test :bones.paip)
(test :bones.wam)
(test :bones.circle)
(let ((exit-code (if *passed* 0 1)))
#+sbcl (sb-ext:exit :code exit-code)
#+ccl (quit exit-code))