src/utils.lisp @ fdb771cc2b8c

Start working on L2

This changes the compilation process to keep track of register types, which
we'll need to distinguish between local/permanent variables.  It also makes
things a bit more obvious/safe when compiling argument registers because they're
tagged explicitly.

This also changes up the actual running of the code by actually using
CALL/PROCEED, though it's not fully fleshed out yet.
author Steve Losh <steve@stevelosh.com>
date Wed, 13 Apr 2016 17:38:57 +0000
parents e29b793a6e91
children d16b5b360398
(in-package #:bones.utils)

;; TODO: learn setf expanders and do this right.
(defmacro push-if-new (thing list-place)
  `(not (eql ,list-place (pushnew ,thing ,list-place))))

(defun vector-push-extend-all (vector &rest things)
  (loop :for thing :in things :do
        (vector-push-extend thing vector)))