X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcompiler%2Ffun-info-funs.lisp;h=d399be7317f24de6fa97ee400485412300844701;hb=74cf7a4d01664fbf72a662ba093ad67ca243b524;hp=a5b6290ddddc760f5cc83adf268c50d6b3f37ae9;hpb=c2431e2d0d0222a3cf20cfdfa48201bdcc65cd76;p=sbcl.git diff --git a/src/compiler/fun-info-funs.lisp b/src/compiler/fun-info-funs.lisp index a5b6290..d399be7 100644 --- a/src/compiler/fun-info-funs.lisp +++ b/src/compiler/fun-info-funs.lisp @@ -23,14 +23,26 @@ (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) + (ecase allocation-style + (:var-alloc + (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))))) + 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)))))