X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcode%2Fpcounter.lisp;h=d2b6b5e8e9d38052bd3100d03586a0ba904f4596;hb=15d6e7c9a2c3234f95dfe278046fa2fee1b0c007;hp=cfd74215391cd532a1c63e71584a3e4765043507;hpb=f3af39f1a29391c2cc9f3308bc0a9ea6d39fb8eb;p=sbcl.git diff --git a/src/code/pcounter.lisp b/src/code/pcounter.lisp index cfd7421..d2b6b5e 100644 --- a/src/code/pcounter.lisp +++ b/src/code/pcounter.lisp @@ -8,28 +8,22 @@ ;;;; bytes consed in a profiled function are all examples of such ;;;; quantities. The name is an abbreviation for "Profiling COUNTER". ;;;; -;;;; It's not one of my more brilliant names, if you have a better -;;;; suggestion, I might be interested. -- WHN 2001-06-22 +;;;; (This isn't one of my more brilliant names, so if you have a +;;;; better suggestion, let me know. -- WHN 2001-06-22) -(in-package "SB!IMPL") +;;; This stuff is implemented in the SB!PROFILE because the profiling +;;; code is currently the only code which wants to poke around in the +;;; implementation details. +(in-package "SB!PROFILE") ;;;; basic PCOUNTER stuff -(/show0 "pcounter.lisp 16") +(/show0 "pcounter.lisp 21") -(defstruct (pcounter (:copier nil)) - (integer 0);; :type unsigned-byte) - (fixnum 0));; :type (and fixnum unsigned-byte))) - -(/show0 "pcounter.lisp 22") - -(declaim (ftype (function (pcounter unsigned-byte) pcounter) incf-pcounter)) -;;;(declaim (inline incf-pcounter)) ; FIXME: maybe inline when more stable +(declaim (maybe-inline incf-pcounter)) (defun incf-pcounter (pcounter delta) (aver (typep delta 'unsigned-byte)) (let ((sum (+ (pcounter-fixnum pcounter) delta))) - (aver (typep sum 'unsigned-byte)) - ;;(declare (type unsigned-byte sum)) (cond ((typep sum 'fixnum) (setf (pcounter-fixnum pcounter) sum)) (t @@ -37,9 +31,8 @@ (setf (pcounter-fixnum pcounter) 0)))) pcounter) -(/show0 "pcounter.lisp 36") +(/show0 "pcounter.lisp 34") -(declaim (ftype (function (pcounter) integer) pcounter->integer)) ;;;(declaim (inline pcounter->integer)) ; FIXME: maybe inline when more stable (defun pcounter->integer (pcounter) (+ (pcounter-integer pcounter) @@ -51,10 +44,9 @@ ;;;; start with a FIXNUM counter and only create a PCOUNTER if the ;;;; FIXNUM overflows. -(/show0 "pcounter.lisp 50") +(/show0 "pcounter.lisp 47") -(declaim (ftype (function ((or pcounter fixnum) integer) (or pcounter fixnum)) %incf-pcounter-or-fixnum)) -;;;(declaim (inline %incf-pcounter-or-fixnum)) ; FIXME: maybe inline when more stable +(declaim (inline %incf-pcounter-or-fixnum)) (defun %incf-pcounter-or-fixnum (x delta) (etypecase x (fixnum @@ -67,7 +59,7 @@ (define-modify-macro incf-pcounter-or-fixnum (delta) %incf-pcounter-or-fixnum) -(/show0 "pcounter.lisp 64") +(/show0 "pcounter.lisp 62") ;;; Trade off space for execution time by handling the common fast ;;; (TYPEP DELTA 'FIXNUM) case inline and only calling generic @@ -81,9 +73,8 @@ (incf-pcounter-or-fixnum ,x ,delta) (incf-pcounter-or-fixnum ,x ,delta))))) -(/show0 "pcounter.lisp 80") +(/show0 "pcounter.lisp 76") -(declaim (ftype (function ((or pcounter fixnum)) integer) pcounter-or-fixnum->integer)) (declaim (maybe-inline pcounter-or-fixnum->integer)) (defun pcounter-or-fixnum->integer (x) (etypecase x