# HG changeset patch # User Steve Losh # Date 1467737050 0 # Node ID 89df9abc00e5acaef02d953df2c30d5191e40ec9 # Parent 970e21fa14b07dbd950c7b0981e25b23092d41f4 Add a handy disassembly macro diff -r 970e21fa14b0 -r 89df9abc00e5 package.lisp --- a/package.lisp Mon Jul 04 23:35:08 2016 +0000 +++ b/package.lisp Tue Jul 05 16:44:10 2016 +0000 @@ -6,6 +6,7 @@ (:use #:cl #:defstar + #:cl-arrows #:bones.quickutils) (:export #:repeat @@ -15,7 +16,7 @@ #:recur #:when-let #:unique-items - )) + #:dis)) (defpackage #:bones.circle (:use #:cl #:defstar) diff -r 970e21fa14b0 -r 89df9abc00e5 src/utils.lisp --- a/src/utils.lisp Mon Jul 04 23:35:08 2016 +0000 +++ b/src/utils.lisp Tue Jul 05 16:44:10 2016 +0000 @@ -56,6 +56,15 @@ :finally (return once))) +(defmacro dis (arglist &body body) + `(->> '(lambda* ,arglist + (declare (optimize speed)) + ,@body) + macroexpand-1 + (compile nil) + disassemble)) + + ;;;; loop/recur (defmacro recursively (bindings &body body) "Execute body recursively, like Clojure's `loop`/`recur`.