X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcompiler%2Ffun-info-funs.lisp;h=d399be7317f24de6fa97ee400485412300844701;hb=19319c931fc1636835dbef71808cc10e252bcf45;hp=6c7c63d1bf41ef2af1f88b6fb0e1c0326f5994c2;hpb=073501ed49414d9638cb41c05fb80627529f796d;p=sbcl.git diff --git a/src/compiler/fun-info-funs.lisp b/src/compiler/fun-info-funs.lisp index 6c7c63d..d399be7 100644 --- a/src/compiler/fun-info-funs.lisp +++ b/src/compiler/fun-info-funs.lisp @@ -9,28 +9,40 @@ (defun %def-reffer (name offset lowtag) (let ((fun-info (fun-info-or-lose name))) (setf (fun-info-ir2-convert fun-info) - (lambda (node block) - (ir2-convert-reffer node block name offset lowtag)))) + (lambda (node block) + (ir2-convert-reffer node block name offset lowtag)))) name) (defun %def-setter (name offset lowtag) (let ((fun-info (fun-info-or-lose name))) (setf (fun-info-ir2-convert fun-info) - (if (listp name) - (lambda (node block) - (ir2-convert-setfer node block name offset lowtag)) - (lambda (node block) - (ir2-convert-setter node block name offset lowtag))))) + (if (listp name) + (lambda (node block) + (ir2-convert-setfer node block name offset lowtag)) + (lambda (node block) + (ir2-convert-setter node block name offset lowtag))))) name) -(defun %def-alloc (name words variable-length-p header lowtag inits) +(defun %def-alloc (name words allocation-style header lowtag inits) (let ((info (fun-info-or-lose name))) (setf (fun-info-ir2-convert info) - (if variable-length-p - (lambda (node block) - (ir2-convert-variable-allocation node block name words header - lowtag inits)) - (lambda (node block) - (ir2-convert-fixed-allocation node block name words header - lowtag inits))))) + (ecase allocation-style + (:var-alloc + (lambda (node block) + (ir2-convert-variable-allocation node block name words header + lowtag inits))) + (:fixed-alloc + (lambda (node block) + (ir2-convert-fixed-allocation node block name words header + lowtag inits))) + (:structure-alloc + (lambda (node block) + (ir2-convert-structure-allocation node block name words header + lowtag inits)))))) name) + +(defun %def-casser (name offset lowtag) + (let ((fun-info (fun-info-or-lose name))) + (setf (fun-info-ir2-convert fun-info) + (lambda (node block) + (ir2-convert-casser node block name offset lowtag)))))