[Cuis-dev] Questions about MessageNode macro transformation

Fernando Gasperi Jabalera fgasperijabalera at gmail.com
Sun Jul 14 15:07:19 PDT 2019

Hi there,

I'm was trying to understand why code like:

a ifNil: [0] ifNotNil: [1]

when parsed got a corresponding MessageNode with an #ifTrue:ifFalse
selector and a receiver of the form a == nil. Following the trail lead me
to the macro transformations in the MessageNode class. It seems to me that
several messages (some loops, boolean operations like and and most of the if
messages) are transformed to a special or canonical form, when some
conditions on the number of arguments of the blocks for example are
satisfied, so that they can be inlined and therefore run faster. Is that
correct? Could someone explain a little bit about why it is this way and
which cases are chosen to be inlined?

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.cuis.st/mailman/archives/cuis-dev/attachments/20190714/baf65ec1/attachment.htm>

More information about the Cuis-dev mailing list