i) How do I reify the value of an RB(Valuel|Literal|LiteralValue)Node? RFValueReification does not work, and there is no reification for literal, value, or literal value nodes.

This is now fixed. All subclasses of RBValueNode with the exception of Cascade now support #value. (Cascade: see below).

ii) How do I reify arguments and results of blocks? I tried reify context for the block body #before and value for #after block "last", but I often run into the problem of no reification for literals.

I added issue tracker entries:
https://pharo.fogbugz.com/f/cases/22704/Block-Execution-reify-value-in-after
https://pharo.fogbugz.com/f/cases/22703/Block-execution-arguments-reification

The story is that we for now unified links on BlockNode to be the same as a link on the block body (as we have with RBMethodNode).

But this is wrong:  a link on a block (e.g. ) [1] should fire when the block *definition* is evaluated. Only a link on the body should fire on execution.

If we link on the body, it will be possible to reify the #value (which is the value of the last statement).

So this is some work (and a non-backward compatible change), but will be done till next week I hope.

iii) How are cascaded message sends reified? Am I supposed to instrument the cascade node or the individual message sends?


https://pharo.fogbugz.com/f/cases/22702/support-before-after-intead-on-RBCascadeNode

It turns out this is just not implemented. Single message sends *inside* should work (as it calls the same code as a normal send to emit code).
But even that needs tests.

Cascade itself needs some code for links, then it will be easy to add reifications for #receiver and #value (and #operation).

I will do that today I hope.

Marcus