The handling on checking whether the method is callable happends inside
the opline #1 (ZEND_INIT_METHOD_CALL). The opcode handler for it
checks its first argument (here: $comparator) whether it is an object
or not. In case it's not, the following happens:

A recoverable error is triggered. Should the script exit here, there's nothing more to be done, this is just as it was before.

In case the script continues, all the oplines are skipped until we find the FCALL_BY_NAME opcode. This is comparable to jumping forward just as, e.g., the ZEND_JMP instruction would.

The return value is set to ZVAL_NULL().

The control is handed back to the executor, which then continues with the ASSIGN opcode

The engine is again in full control; if an exception was raised by the handler, that leads to the known behavior.

Other Impact

On Backward Compatiblity

This RFC is backwards compatible with previous PHP releases.

On SAPIs

There is no impact on any SAPI.

On Existing Extensions

No impact.

On Performance

No effect, before, the script terminated.

Proposed PHP Version(s)

This RFC targets PHP 5.7 or PHP 6.0, whichever comes first.

Proposed Voting Choices

This RFC modifies the PHP language behaviour and therefore requires a two-third majority of votes.

Patches and Tests

There is a pull request available over at GitHub which includes tests. Feedback welcome!