X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcode%2Fprofile.lisp;h=b6b2a216f186037fbf1087c8b0c95a130f115798;hb=672b2f6cb751566526c7f3bb3de6b7d8424760e2;hp=754fcb0694b7395a20e97f61ef9b16c14d90e6dc;hpb=b9a1b17b079d315c1eec194eb4f93f7d058b24cf;p=sbcl.git diff --git a/src/code/profile.lisp b/src/code/profile.lisp index 754fcb0..b6b2a21 100644 --- a/src/code/profile.lisp +++ b/src/code/profile.lisp @@ -46,7 +46,8 @@ (make-hash-table ;; EQL testing isn't good enough for generalized function names ;; like (SETF FOO). - :test 'equal)) + :test 'equal + :synchronized t)) (defstruct (profile-info (:copier nil)) (name (missing-arg) :read-only t) (encapsulated-fun (missing-arg) :type function :read-only t) @@ -144,7 +145,7 @@ (values ;; ENCAPSULATION-FUN (lambda (&more arg-context arg-count) - (declare (optimize speed safety)) + (declare (optimize speed safety sb-c::stack-allocate-dynamic-extent)) ;; Make sure that we're not recursing infinitely. (when (boundp '*computing-profiling-data-for*) (unprofile-all) ; to avoid further recursion @@ -157,8 +158,8 @@ (let ((dticks 0) (dconsing 0) (inner-enclosed-profiles 0)) - (declare (type unsigned-byte dticks dconsing)) - (declare (type unsigned-byte inner-enclosed-profiles)) + (declare (type unsigned-byte dticks dconsing inner-enclosed-profiles) + (dynamic-extent dticks dconsing inner-enclosed-profiles)) (aver (typep dticks 'unsigned-byte)) (aver (typep dconsing 'unsigned-byte)) (aver (typep inner-enclosed-profiles 'unsigned-byte))