[cmucl-help] Inlined TYPEP over-optimization issue with CHANGE-CLASS
Christophe Rhodes
csr21 at cantab.net
Sun Feb 12 13:58:29 UTC 2012
Dan Corkill <corkill at GBBopen.org> writes:
> (defun %show-issue (instance)
> (change-class instance 'bar)
> (format t "~&;; Inlined TYPEP: ~s (~:*~:[correct~;incorrect~])~
> ~%;; Not-inlined TYPEP: ~s (~:*~:[correct~;incorrect~])~%"
> (typep instance 'foo)
> (locally (declare (notinline typep))
> (typep instance 'foo))))
Here's a related test case:
(defun %show-issue (instance)
(when (typep instance 'foo)
(change-class instance 'bar)
(format t "~&;; Inlined TYPEP: ~s (~:*~:[correct~;incorrect~])~
~%;; Not-inlined TYPEP: ~s (~:*~:[correct~;incorrect~])~%"
(typep instance 'foo)
(locally (declare (notinline typep))
(typep instance 'foo)))))
(%show-issue (make-instance 'foo))
I don't know whether that passes or fails on CMUCL, but it does reveal
a too-optimistic inlining (or maybe constraint propagation) on SBCL --
so it might be worth checking.
Best,
Christophe
More information about the cmucl-help
mailing list