On 27.03.25 18:11, o...@ocs.cz wrote:
Hi there,
I've just bumped into this behaviour, as shown e.g., by the code quoted below.
A safe method call first evaluates method's arguments, and only then trashes
the call.
I think we do in general:
* push arguments on stack
* push receiver on stack
* write method call
and for the safe variant we probably do:
* push arguments on stack
* push receiver on stack
* write jmp if null
* write method call
* jmp to after call
* marker for null case
* remove elements from stack
* push null
* marker for after call
Is this the intended behaviour? It would seem to me much better if the
arguments were not evaluated in this case (precisely same way as if we used the
java-like “if (obj) obj.whatever...” approach instead of the safe call) — but
perhaps I am overlooking something of importance.
expected yes... correct is the other question, because I am with you,
this should be like the if-variant
bye Jochen