Since DelayScheduler runs very often at the highest priority, the
desire is to have it highly optimised.   One way to do this is put
everything into a very long method to avoid the overhead of message
sends.

Another might be to keep it logical split into several method for
readability, but have those methods in-lined.   I'm sure how pragmatic
doing that would be, but it sparked my curiosity....   how do you go
about designating a method/message to be inlined.

I see OCASTTranslator>>visitMessageNode:
(presumably) calls RBMessageNode>>isInlined
which does a bundle of checks, for example RBMessageNode>>isInlineIf
checks (#(ifTrue: ifFalse: ifTrue:ifFalse: ifFalse:ifTrue:) includes:
self selector) ifFalse:

But there also seems to be an <inline> pragma per
WarpBlt>>rgbMap:from:to:

What are the trade-off between these approaches, particularly for the
special case where a method may have only one sender, where code is
broken into small "private" methods mainly for readability.

Also, do you need to manually supply the inlined bytecode yourself?

cheers -ben

Reply via email to