X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Fcode%2Ftypedefs.lisp;h=e652fc48ccb955a710caa74e2aec51e1dbad533f;hb=af6137c3d8580b3e939e6f78eadfbf41015b9668;hp=340d3ddece87e739221c8ccf2552a098d0936433;hpb=a987d443ea0935bfdfa2eb8547218fef9730a14f;p=sbcl.git diff --git a/src/code/typedefs.lisp b/src/code/typedefs.lisp index 340d3dd..e652fc4 100644 --- a/src/code/typedefs.lisp +++ b/src/code/typedefs.lisp @@ -42,18 +42,20 @@ (multiple-value-bind (whole wholeless-arglist) (if (eq '&whole (car arglist)) (values (cadr arglist) (cddr arglist)) - (values (gensym) arglist)) + (values (sb!xc:gensym) arglist)) (multiple-value-bind (forms decls) (parse-body body :doc-string-allowed nil) `(progn (!cold-init-forms - (setf (info :type :translator ',name) - (lambda (,whole) - (block ,name - (destructuring-bind ,wholeless-arglist - (rest ,whole) ; discarding NAME - ,@decls - ,@forms))))) + (let ((fun (lambda (,whole) + (block ,name + (destructuring-bind ,wholeless-arglist + (rest ,whole) ; discarding NAME + ,@decls + ,@forms))))) + #-sb-xc-host + (setf (%simple-fun-arglist (the simple-fun fun)) ',wholeless-arglist) + (setf (info :type :translator ',name) fun))) ',name)))) ;;; DEFVARs for these come later, after we have enough stuff defined. @@ -138,12 +140,12 @@ #!-sb-fluid (declaim (inline type-list-cache-hash)) (declaim (ftype (function (list) (unsigned-byte 8)) type-list-cache-hash)) (defun type-list-cache-hash (types) - (logand (loop with res = 0 - for type in types - for hash = (type-hash-value type) - do (setq res (logxor res hash)) - finally (return res)) - #xFF)) + (logand #xFF + (loop with res fixnum = 0 + for type in types + for hash = (type-hash-value type) + do (setq res (logxor res hash)) + finally (return res)))) ;;;; cold loading initializations