From: Nikodemus S. <de...@us...> - 2010-04-01 18:26:15
|
Update of /cvsroot/sbcl/sbcl/tests In directory sfp-cvsdas-3.v30.ch3.sourceforge.com:/tmp/cvs-serv11301/tests Modified Files: profile.impure.lisp Log Message: 1.0.37.22: SB-PROFILE improvements * More efficient counters: use CAS to increment the overflow, no need for a separate spinlock. * Current off-by-one in the event of counter-overflows. * Report per-function GC overhead. (patch by John Fremlin) Index: profile.impure.lisp =================================================================== RCS file: /cvsroot/sbcl/sbcl/tests/profile.impure.lisp,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- profile.impure.lisp 22 Jun 2009 16:06:23 -0000 1.1 +++ profile.impure.lisp 1 Apr 2010 17:36:03 -0000 1.2 @@ -89,3 +89,16 @@ (unless (equal res want) (error "wanted ~S, got ~S" want res))) (report)) + +(with-test (:name :profiling-counter) + ;; Make sure our profiling counters don't miscount + (let ((c (sb-profile::make-counter)) + (i 0)) + (loop repeat 1000000 + do (let ((n (random (* 12 (ash 1 sb-vm:n-word-bits))))) + (sb-profile::incf-counter c n) + (incf i n)) + (let ((n (random (ash 1 sb-vm:n-word-bits)))) + (sb-profile::incf-counter c n) + (incf i n))) + (assert (= i (sb-profile::counter-count c))))) |