(defmethod lap-prepass (backend-function (instruction ir:make-dx-typed-vector-instruction) uses defs) (setf (gethash instruction *prepass-data*) (allocate-stack-slots (1+ (ir:make-dx-typed-vector-size instruction)) :aligned t :livep (eql (sys.int::specialized-array-definition-type (ir:make-dx-typed-vector-type instruction)) 't)))) (defmethod emit-lap (backend-function (instruction ir:make-dx-typed-vector-instruction) uses defs) (let* ((slots (gethash instruction *prepass-data*)) (size (ir:make-dx-typed-vector-size instruction)) (words (1+ size))) (when (oddp words) (incf words)) ;; Initialize the header. (load-literal :x9 (logior (ash (ir:make-dx-typed-vector-size instruction) sys.int::+object-data-shift+) (ash (sys.int::specialized-array-definition-tag (ir:make-dx-typed-vector-type instruction)) sys.int::+object-type-shift+))) (emit-stack-store :x9 (+ slots words -1)) ;; Generate pointer. (load-literal :x9 (+ (- (* (1+ (+ slots words -1)) 8)) sys.int::+tag-object+)) (emit `(lap:add ,(ir:make-dx-typed-vector-result instruction) :x29 :x9)) ;; Possibly zero fill. (when (ir:make-dx-typed-vector-zero-fill-p instruction) ;;;;;; What is emmited here? (emit ))))