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

Reply via email to