Simplify and optimize register allocation just a bit
    
        | author | Steve Losh <steve@stevelosh.com> | 
    
        | date | Mon, 11 Jul 2016 22:33:25 +0000 | 
    
    
        | parents | 789aa5540746 | 
    
        | children | cb3cc671d18d | 
    
        | branches/tags | (none) | 
    
        | files | src/wam/compiler.lisp | 
Changes
    
--- a/src/wam/compiler.lisp	Mon Jul 11 21:38:10 2016 +0000
+++ b/src/wam/compiler.lisp	Mon Jul 11 22:33:25 2016 +0000
@@ -542,7 +542,7 @@
 
 (defstruct allocation-state
   (local-registers (vector) :type (vector t *)) ; todo should this be a (vector symbol) instead?
-  (stack-registers (make-array 1) :type (simple-array symbol (*)))
+  (stack-registers nil :type list)
   (permanent-variables nil :type list)
   (anonymous-variables nil :type list)
   (reserved-variables nil :type list)
@@ -656,15 +656,14 @@
        (local-registers (make-array 64
                           :fill-pointer (or reserved-arity actual-arity)
                           :adjustable t
-                          :initial-element nil))
+                          :initial-element 0))
        ;; We essentially "preallocate" all the permanent variables up front
        ;; because we need them to always be in the same stack registers across
        ;; all the terms of our clause.
        ;;
        ;; The ones that won't get used in this term will end up getting
        ;; flattened away anyway.
-       (stack-registers (make-array (length permanent-variables)
-                          :initial-contents permanent-variables))
+       (stack-registers permanent-variables)
        (allocation-state
          (make-allocation-state
            :local-registers local-registers