anchor.diff:  (define-pure-operator (raw-vec-address vec index) result ()
     (let* ((tag (attr-ref attrs 'tag))
            (scale (attr-ref attrs 'scale)))
  -    (unless (= scale number-tag-bits)
  -      (emit-sar out (immediate (- number-tag-bits scale)) index))
  +    (emit-scale-number out scale index)
       (emit-lea out (dispmem tag value-size vec index) result)))
   
   (define-pure-operator (vec-ref vec index) result ()
     (let* ((tag (attr-ref attrs 'tag))
            (scale (attr-ref attrs 'scale)))
  -    (unless (= scale number-tag-bits)
  -      (emit-sar out (immediate (- number-tag-bits scale)) index))
  +    (emit-scale-number out scale index)
       (emit-movzx out (dispmem tag value-size vec index) result scale)))
   
   (define-operator (vec-set! vec index val) val ()
     (let* ((tag (attr-ref attrs 'tag))
            (scale (attr-ref attrs 'scale)))
  -    (unless (= scale number-tag-bits)
  -      (emit-sar out (immediate (- number-tag-bits scale)) index))
  +    (emit-scale-number out scale index)
       (emit-mov out val (dispmem tag value-size vec index) scale)))
   
   (define-reg-use (vec-copy attrs src-addr dst-addr len)
  
positive.code:         (emit-lea out (dispmem 0 tag %alloc) result))
        (begin
          (emit-mov out len raw-len)
          (emit-sar out (immediate (- number-tag-bits scale)) raw-len)
          (emit-sub out (immediate value-size) %alloc)
          (emit-sub out raw-len %alloc)
          (emit-and out (immediate allocation-alignment-mask) %alloc)
  
negative.code:   (codegen bodyfunc (dest-value %func) in-frame-base in-frame-base
             (remove %nargs general-registers) out)
    (emit-push out %nargs)
    (emit-scale-number out value-scale %nargs)
    (emit-sub out %nargs %sp)
    (emit-clear out %nargs)
    (emit out "call *~A" (value-sized (dispmem function-tag 0 %func)))
  