X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcode%2Fkernel.lisp;h=ad5d8158de9ba7c2d71954c49781d298ab5f1750;hb=024389e7e3db268f535e36d883b4efc9d7ea0f65;hp=1311ee316294c634c7bcf6879ae1e07e0e96c92d;hpb=338732358d49ab202fe55c3581294597d63aec6b;p=sbcl.git diff --git a/src/code/kernel.lisp b/src/code/kernel.lisp index 1311ee3..ad5d815 100644 --- a/src/code/kernel.lisp +++ b/src/code/kernel.lisp @@ -32,6 +32,18 @@ (defun widetag-of (x) (widetag-of x)) +;;; WIDETAG-OF needs extra code to handle LIST and FUNCTION lowtags. When +;;; we're only dealing with other pointers (eg. when dispatching on array +;;; element type), this is going to be faster. +(declaim (inline %other-pointer-widetag)) +(defun %other-pointer-widetag (x) + (sb!sys:sap-ref-8 (int-sap (get-lisp-obj-address x)) + #.(ecase sb!c:*backend-byte-order* + (:little-endian + (- sb!vm:other-pointer-lowtag)) + (:big-endian + (- (1- sb!vm:n-word-bytes) sb!vm:other-pointer-lowtag))))) + ;;; Return a System-Area-Pointer pointing to the data for the vector ;;; X, which must be simple. ;;; @@ -65,6 +77,9 @@ (defun %simple-fun-arglist (func) (%simple-fun-arglist func)) +(defun (setf %simple-fun-arglist) (new-value func) + (setf (%simple-fun-arglist func) new-value)) + ;;; Extract the name from the function header FUNC. (defun %simple-fun-name (func) (%simple-fun-name func)) @@ -114,15 +129,6 @@ (defun code-header-set (code-obj index new) (code-header-set code-obj index new)) -(defun %raw-bits (object offset) - (declare (type index offset)) - (sb!kernel:%raw-bits object offset)) - -(defun %set-raw-bits (object offset value) - (declare (type index offset)) - (declare (type sb!vm:word value)) - (setf (sb!kernel:%raw-bits object offset) value)) - (defun %vector-raw-bits (object offset) (declare (type index offset)) (sb!kernel:%vector-raw-bits object offset))