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)))